#! perl -slw use strict; $|++; srand 1; sub rndStr{ join'', @_[ map{ rand @_ } 1 .. shift ] } our $N ||= 1000; our $S ||= 30e6; my $chrom = chr(0) x $S; substr( $chrom, $_, 1, ('A', 'C', 'G', 'T' )[ rand 4 ] ) for 0 .. $S-1; my @probes = map rndStr( 10, 'A', 'C', 'G', 'T' ), 0 .. $N; warn "Trying $N probes with perl $]"; warn time; my $re = join '|', @probes[ 0 .. $N ]; $re = qr[$re]; printf "$-[ 0 ] : '$1'\n" while $chrom =~ m[($re)]g; print "\n"; warn time; __END__ C:\test>\Perl510\bin\perl5.10.0.exe -s 668954.p10 -S=1e6 -N=13104 | wc -l Trying 13104 probes with perl 5.010000 at 668954.p10 line 18. 1203549864 at 668954.p10 line 20. 1203549867 at 668954.p10 line 27. 11282 C:\test>\Perl510\bin\perl5.10.0.exe -s 668954.p10 -S=1e6 -N=13105 | wc -l Trying 13105 probes with perl 5.010000 at 668954.p10 line 18. 1203549872 at 668954.p10 line 20. 1203550518 at 668954.p10 line 27. 11282