#!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 #### $ cat sequence.fa | grep TAA GAGTTTTATCGCTTCCATGACGCAGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTT GATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATCGAAGTGGACTGCTGGCGGAAAATGAGAAA ATTCGACCTATCCTTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATCAACTAACGATTCTG TCAAAAACTGACGCGTTGGATGAGGAGAAGTGGCTTAATATGCTTGGCACGTTCGTCAAGGACTGGTTTA GATATGAGTCACATTTTGTTCATGGTAGAGATTCTCTTGTTGACATTTTAAAAGAGCGTGGATTACTATC TGAGTCCGATGCTGTTCAACCACTAATAGGTAAGAAATCATGAGTCAAGTTACTGAACAATCCGTACGTT TCCAGACCGCTTTGGCCTCTATTAAGCTCATTCAGGCTTCTGCCGTTTTGGATTTAACCGAAGATGATTT CGATTTTCTGACGAGTAACAAAGTTTGGATTGCTACTGACCGCTCTCGTGCTCGTCGCTGCGTTGAGGCT TGCGTTTATGGTACGCTGGACTTTGTGGGATACCCTCGCTTTCCTGCTCCTGTTGAGTTTATTGCTGCCG TCATTGCTTATTATGTTCATCCCGTCAACATTCAAACGGCCTGTCTCATCATGGAAGGCGCTGAATTTAC GGAAAACATTATTAATGGCGTCGAGCGTCCGGTTAAAGCCGCTGAATTGTTCGCGTTTACCTTGCGTGTA CGCGCAGGAAACACTGACGTTCTTACTGACGCAGAAGAAAACGTGCGTCAAAAATTACGTGCGGAAGGAG TGATGTAATGTCTAAAGGTAAAAAACGTTCTGGCGCTCGCCCTGGTCGTCCGCAGCCGTTGCGAGGTACT AAAGGCAAGCGTAAAGGCGCTCGTCTTTGGTATGTAGGTGGTCAACAATTTTAATTGCAGGGGCTTCGGC CCCTTACTTGAGGATAAATTATGTCTAATATTCAAACTGGCGCCGAGCGTATGCCGCATGACCTTTCCCA TCTTGGCTTCCTTGCTGGTCAGATTGGTCGTCTTATTACCATTTCAACTACTCCGGTTATCGCTGGCGAC TCCTTCGAGATGGACGCCGTTGGCGCTCTCCGTCTTTCTCCATTGCGTCGTGGCCTTGCTATTGACTCTA CTGTAGACATTTTTACTTTTTATGTCCCTCATCGTCACGTTTATGGTGAACAGTGGATTAAGTTCATGAA $ cat sequence.fa | grep -o TAA | wc -l 21 #### $ cat sequence.fa | grep -b -o TAA 29:TAA 73:TAA 106:TAA 201:TAA 248:TAA 332:TAA 378:TAA 385:TAA 448:TAA 480:TAA 512:TAA 722:TAA 743:TAA 857:TAA 864:TAA 870:TAA 934:TAA 974:TAA 1008:TAA 1019:TAA 1265:TAA #### #!usr/bin/perl use strict; use warnings; my $substring = 'TAA'; while (<>) { chomp; next if $. < 2; # Skip first line my $found = index($_, $substring); while ($found != -1) { # check for multiple occurrences in the same string print "Found $substring at $found\n"; my $offset = $found + 1; $found = index($_, $substring, $offset); } } continue { close ARGV if eof; # reset $. } __END__ $ perl bio_2.pl sequence.fa Found TAA at 29 Found TAA at 73 Found TAA at 106 Found TAA at 201 Found TAA at 248 Found TAA at 332 Found TAA at 378 Found TAA at 385 Found TAA at 448 Found TAA at 480 Found TAA at 512 Found TAA at 722 Found TAA at 743 Found TAA at 857 Found TAA at 864 Found TAA at 870 Found TAA at 934 Found TAA at 974 Found TAA at 1008 Found TAA at 1019 Found TAA at 1265 #### $ perl bio_2.pl sequence.fa Found ATG at 16 Found ATG at 50 Found ATG at 133 Found ATG at 232 Found ATG at 252 Found ATG at 287 Found ATG at 305 Found ATG at 363 Found ATG at 394 Found ATG at 489 Found ATG at 575 Found ATG at 651 Found ATG at 689 Found ATG at 724 Found ATG at 854 Found ATG at 859 Found ATG at 954 Found ATG at 1014 Found ATG at 1044 Found ATG at 1051 Found ATG at 1145 Found ATG at 1228 Found ATG at 1249 Found ATG at 1272 tinyos@tinyOS:~/Monks$ cat sequence.fa | grep -b -o ATG 16:ATG 50:ATG 133:ATG 232:ATG 252:ATG 287:ATG 305:ATG 363:ATG 394:ATG 489:ATG 575:ATG 651:ATG 689:ATG 724:ATG 854:ATG 859:ATG 954:ATG 1014:ATG 1044:ATG 1051:ATG 1145:ATG 1228:ATG 1249:ATG 1272:ATG #### $ 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