use strict; use warnings; use feature qw(say); my $file = "BSAC.pl"; my %cod = ( 1 => "red", 2 => "non", 3 => "green" ); open my $in, "<", "$file"; open my $out, ">", "output.txt"; say $out "Coordinate No of Strains AA Change"; my $SNP; my $count; my $change; while ( my $line = <$in> ) { chomp $line; say qq(DEBUG: Line = "$line"); if ( $line =~ /^FT\s+SNP\s+(\d+)/ ){ $SNP = $1; say qq(\$SNP = $1;); } elsif ( $line =~ /^FT\s+\/note="(.*)"/) { my $note = $1; say qq(my \$note = $1); $count = ($note =~ tr/=/=/); $note =~ /\((AA \w+->\w+)\)\s*$/; $change = $1 || ""; } elsif ( $line =~ /^FT\s+\/colour=(\d+)/ ) { say qq(Code = $1); if ( $cod{$1} eq "non" ) { printf $out "%-12.12s %-15.15s %s\n", $SNP, $count, $change; } } }