http://www.perlmonks.org?node_id=1149421

nikkk has asked for the wisdom of the Perl Monks concerning the following question:

i wrote a script that given a sequence extracts a 'n' dimension hashtable of oligos, and tells how many times and where a certain oligo is located. I want to insert from keyboard an oligo and extract the positions, but ican't write it down. Any suggestions? Thank you very much! That's my script, that when asked to insert query returns the name of the file i opened first....
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{$q +uery}}\n"); } else { print("$query does not appear in the sequence"); }