C:\test>dir randDNA.txt
10/06/2012 01:13 1,036,000,000 randDNA.txt
C:\test>head randDNA.txt
ATAGTAAGGGACCTCAGCGAGTGTCATAAATATAAGTTGTCGAGAGGTAACGATAGACGCCAATCACTTTTA
GCATCCAGGGGGTCAGTGTCCTAGCGACGTGGAACAACGACTACGCTTCGTAGGTCTCACCGTATAGATGCC
CGGGAGGCCTGCAAAGGAGTGAAGGGTAACGCCTGAACCCTTTGGCCTATCTACGTCGAGATTTCTACCGGA
GCGGAGATCTCCCCCCGGATTTCGTCAAATTCTGGAAATAAGTGTAGCAACCGAACGGTATAGCCAGATAAT
GCTCGAGCACACGCGGACGGTCTCAGAAACTAATTTTCTTAAGCTGGAACAGGCAACCAAAGATTTTAGATT
ATCGGACGTAGCCAGAAGTGCGGATTTACAGCAACGCCTTTCTCAAAAGTTGCCGTCCCGCGGCACTAATAC
ACCGATATGAAGGCGCTGAAACGATTATGTGTAGTGACGTGCCTTTCAGCGGCTATGGACGCTATCCCCGCA
GTCATGAGTCCAATTTGGGGTTAGCTGAAATAACCTGCTGTCCCCTAAAATTGTCGCATTCAAGCAGGGTGG
CGGGTACACATGCTAGCATCCGGACGCTATAAGGGCTCCCTTAGTAACATTTCCACTTTCTTGATATTTGTG
GGTGCGTTTAACGACGTCATTACTATGAGAGTCGGTATAGCCATCACATAATGACTCGAGCTTACGTCCTAC
####
#! perl -slw
use strict;
use Time::HiRes qw[ time ];
my $start = time();
local $/;
my $DNA = <>;
$DNA =~ tr[\n][]d;
my $seek = 'AGAGAGAA';
my $p = 0;
printf "%s found at position %d\n",
$seek, $p while $p = 1+index $DNA, $seek, $p;
printf STDERR "Took %.3f seconds\n", time() - $start;
__END__
C:\test>DNAsearch1 randDNA.txt | wc -l
Took 11.281 seconds
15313
####
#! perl -slw
use strict;
use Time::HiRes qw[ time ];
my $seek = 'AGAGAGAA';
my $start = time();
my $file = shift;
open DNA, '<', $file or die $!;
my $size = -s( *DNA );
for my $o ( 1 .. $size - 100 ) {
read( DNA, my $DNA, 100 );
$DNA =~ tr[\n][]d;
my $p =0;
printf "%s found at position %d\n",
$seek, $p while $p = 1+index $DNA, $seek, $p;
seek( DNA, $o, 0 );
}
printf "Took %.3f seconds\n", time() - $start;
__END__
[ 1:32:07.24] C:\test>DNAsearch2 randDNA.txt | wc -l
1441865
[ 4:12:28.90] C:\test>