#!usr/bin/perl use strict; use warnings; my %hash; my $substring = 'ATG'; my @tags = ('TAG', 'TAA', 'TGA'); while (<>) { chomp; next if $. < 2; # Skip first line my $found = index($_, $substring); while ($found != -1) { foreach my $tag (@tags) { my $position = index($_, $tag, $found + 2); $hash{$position} = $tag if ($position != -1); } my $offset = $found + 1; $found = index($_, $substring, $offset); } } continue { close ARGV if eof; # reset $. } foreach my $position (sort {$a <=> $b} keys %hash) { print "Position: $position String: $hash{$position}\n"; } __END__ $ perl bio.pl sequence.fa Position: 29 String: TAA Position: 48 String: TGA Position: 73 String: TAA Position: 134 String: TGA Position: 201 String: TAA Position: 221 String: TGA Position: 248 String: TAA Position: 288 String: TGA Position: 309 String: TAG Position: 324 String: TGA Position: 332 String: TAA Position: 378 String: TAA Position: 381 String: TAG Position: 395 String: TGA Position: 408 String: TGA Position: 448 String: TAA Position: 505 String: TGA Position: 512 String: TAA Position: 621 String: TGA Position: 700 String: TGA Position: 722 String: TAA Position: 743 String: TAA Position: 752 String: TGA Position: 857 String: TAA Position: 864 String: TAA Position: 957 String: TAG Position: 974 String: TAA Position: 1002 String: TGA Position: 1019 String: TAA Position: 1052 String: TGA Position: 1198 String: TGA Position: 1210 String: TAG Position: 1253 String: TGA Position: 1265 String: TAA