I have changed the code, but now my problem seems to be that I can only access the last line of the output outside the loops. I wonder if there's a way to store the variables inside the loop to be accessible outside.
The code looks like this now.
if(@ARGV < 3){
die "Not enough arguments\n";
}
$sequence="";
$fastaID;
open(FILE1,"$ARGV[0]") or die "No fasta file provided in command line:
+ $!\n";
while ($line=<FILE1>){
chomp($line);
if ($line=~/^\s*$/){
next;
}elsif ($line=~/^.*$/){
$fastaID=$line;
$fastahash{$fastaID}=1;
}
}
open(FILE2,"$ARGV[2]") or die "No fasta file provided in command line:
+ $!\n";
while($line2=<FILE2>){
chomp($line2);
if ($line2=~/^>/){
@data=split(" ",$line2);
$fasta=$data[1];
$sequence="";
}else{
$sequence.=$line2;
}
}
if (exists $fastahash{$fasta}){
print "$fastaID\t $sequence\n";
}
exit;
And the output, which is just the last key value in the fastahash is
2056360013 Musacgagchagshgashcgahcgacacsasasasacsacsasasacacaasc
+assacsaascascascascac