두 개의 큰 파일을 비교하고 "Mus musculus"가있는 모든 내용을 포함하는 모든 줄을 새 파일에 쓰려고합니다. 내 코드는 다음과 같습니다"strict refs"사용 중 문자열을 기호 ref로 사용할 수 없습니다
#!/usr/bin/perl
use warnings;
use strict;
my $infile1 = "geneIDs3_MouseToUniProtAccessions.txt";
my $inFH1;
unless (open ($inFH1, "<", $infile1)){
die join (' ', "can't open", $infile1, "for reading", $!);
}
my @list1 = <$inFH1>;
shift @list1;
close $inFH1;
my @list1_new;
for ($a = 0; $a < scalar @list1; $a++){
if ($list1[$a] =~ /(.*Mus musculus.*)/){
push @list1_new, $1;
}
}
my $infile2 = "affymetrixIDs_MouseToUniProtAccessions.txt";
my $inFH2;
unless (open ($inFH2, "<", $infile2)){
die join (' ', "can't open", $infile2, "for reading", $!);
}
my @list2 = <$inFH2>;
shift @list2;
close $inFH2;
my @list2_new;
for ($a = 0; $a < scalar @list2; $a++){
if ($list2[$a] =~ /(.*Mus musculus.*)/){
push @list2_new, $1;
}
}
my @list = ("");
for ($a = 0; $a < scalar @list1_new; $a++){
for ($b = 0; $b < scalar @list2_new; $b++){
if ($list1_new[$a] eq $list2_new[$b]){
push @list, $list1_new[$a];
}
}
}
unless (open (@list, ">", "match_1.txt")){
die join (' ', "can't write the common interest");
}
실행 한 후, 펄이 나에게 Can't use string ("1") as a symbol ref while "strict refs" in use at match_for_part_III_9.pl line 47.
사람이 그것을 해결하는 방법을 알고 있나요 언급 한 오류를 준다? 어떤 제안이라도 대단히 감사하겠습니다. 당신은 47
# VVVV unless (open (@list, ">", "match_1.txt")){ die join (' ', "can't write the common interest"); }
대신 줄을 작성하기위한 match_1.txt
을 열려면 파일 핸들로 @list
의 스칼라 표현을 사용하려고
어떤 줄이 47 줄입니까? 내 화면에서 곁눈질로 계산할 기분이 아니야. – jwodder
'unless (open (@list, ">", "match_1.txt")) {' –
마지막 호출에 대한 파일 핸들로'@list'의 스칼라 표현을 사용하려고합니다. 그건 틀렸어요. – simbabque