use strict; use warnings; my $dir="./Im1107Rmapto06len90bp1miss1gap-2/"; my $DIR; my $OUTDIR="./Im1107Runmapped05and06/"; mkdir $OUTDIR; my $f; my @lis=(); my $IN; my $l=""; my $w=""; my %hash=(); my $dirref="./Im1107Runmapped05/"; my $DIRREF; my $g; my $r=""; my $z=""; my $OUT; my $REF; my $u="-unmapped05and06"; opendir $DIR,$dir or die "Error $dir\n"; while($f=readdir $DIR){ if($f ne "." && $f ne ".." && $f=~ /^$w/){ print "$f\n"; open $IN,"<","$dir$f" or die "Error $IN\n"; while($l=<$IN>){ chomp $l; @lis=split /\t/,$l; $hash{">$lis[0]"}="peni16"; } } } close $IN; closedir $DIR; opendir $DIRREF,$dirref or die "Error $dirref\n"; while($g=readdir $DIRREF){ if($g ne "." && $g ne ".." && $g=~ /^$z/){ print "$g\n"; open $REF,"<","$dirref$g" or die "Error $REF\n"; open $OUT,">","$OUTDIR$g$u.fasta"; my $check=0; while($r=<$REF>){ chomp $r; if($r=~ /^>.+/){ $check=0; if(exists $hash{"$r"}){ $check=1; }else{ print $OUT "$r\n"; } }elsif($check==0){ print $OUT "$r\n"; } } print "OK2"; close $REF; close $OUT; } } print "OK3"; closedir $DIRREF; print "OK4"; exit;