use strict; my $f; my $nomefile; my $line; my %oligo = (); my %pos = (); my $piece; my $query; my $sequenza; my $i; $nomefile = $ARGV[0]; open $f, "< $nomefile" or die "cannot open $nomefile: $!"; $sequenza = <$f>; while($line = <$f>) { chomp($line); if(substr($line, 0, 1) ne ">") { $sequenza = $sequenza.$line; } } $sequenza = uc $sequenza; for($i = 0; $i < length($sequenza) - 4; $i++) { $piece = substr($sequenza, $i, 4); if(exists $oligo{$piece}) { $oligo{$piece} = $oligo{$piece} + 1; push(@{$pos{$piece}} , $i + 1); } else { $oligo{$piece} = 1; push(@{$pos{$piece}} , $i + 1); } } foreach $piece (sort keys %oligo) { print("$piece\t$oligo{$piece}\t@{$pos{$piece}}\n"); } print("Insert query:\n"); $query = <>; chomp($query); $query = uc $query; if(exists $oligo{$query}) { print("$query\t compare $oligo{$query} volte\t in posizione @{$pos{$query}}\n"); } else { print("$query does not appear in the sequence"); }