1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
#!/usr/bin/perl
use warnings;
use Time::HiRes;
my @sequence = qw[
TCGCCCGCGGGGTTCAGCCGGCATTCGTGCCGGTGTACTTCCCCGTGGGCGGGCCAGCGTCGGTTTGGGCGGCCGGTCAAAGGCCCTCGGAATGTATCACCTGTAGACGTGACGATGTAACACGCCTGGACCGAGGAACGCGCTTCGGCTCGGACGCTGGCGTAATGGTCGTAAATGACCCGTCTTGAAACACGGACCTCTCGGGGTGTCTTATAGCCGAGGGTGCAATGCGGCCTTCGCCCGCGGGGTTTCGCCCGCGGGGTT
TCGCTCTGTAGACGTGACGATGTAACACGCGGGGTTCAGCCGGGCTTCGGCCCGGTGTACTTCCCCGCGGGCGGGCCAGCGTCGGTTTGGGCGGCCGGTCAAAGGCCTCCGGAATGTAGCGCCCTTCGGGGCGCCTTATAGCCGGGGGTGCAATGCGGCCAGCCTGGACCGAGGAACGCGCTTCGGCACGGACGCTGGCATATGATACCCATCCCTAGAACAGATATGGTTGTAAACGACCCGTCTTGAAACACGGACC
TCCGGTCCTCGAGCGTATGGGGCTTTGTCACCCGCTCAGTAGGTCGGGCCGGGGCCTTTGCCCTCTCCAACCTTTTTTTCCTTAGGTTGACCTCGGATCAGGTAGGGATACCCGCTGAACTTAAGCATATCAATAAGCGGAGGAAAAGAAACCAACCGGGATTGCCTCAGTAACGGCGAGTGAAGCGGCAAGAGCTCAAATTTGAAAGCTTGATACCGATCCCTAGAACAGATGGCCCCTCCGGGGTCCGCATTGTAATTTGCAGAGGATGC
TCCGGTCCTCGAGCGTATGGGGCTTTGTCACCCGCTCAGTAGGTCGGGCCGGGGCCTTTTGTAGACGTGACGATGTAACACGCCCTCTCCAACCTTTTTTTCCTTAGGTTGACCTCGGATCAGGTAGGGATACCCGCTGAACTTAAGCATATCAATAAGCGGAGGAAAAGAAACCAACCGGGATTGCCTCAGTAACGGCGAGTGAAGCGGCAAGAGCTCAAATTTGAAAGCTGATACCGATCCCTAGAACAGATTGGCCCCTCCGGGGTCCGCATTGTAATTTGCAGAGGATGCTTCGGGCTCAG
];
my $start = 'TGTAGACGTGACGATGTAACAC';
my $end = 'TGATACCGATCCCTAGAACAGAT';
my $middle = '[ACGT]{100,250}';
my $tsStart = Time::HiRes::time;
for($i=1; $i<5000; $i++) {
open my $fh, '>', 'result.txt';
foreach my $row (@sequence) {
my ($subseq) = $row =~
m/
(?: .*(?=$start) )?
(
(?: ($start) ( $middle ) ($end) )
|
(?: ($start) ( $middle ) )
|
(?: ( $middle ) ($end) )
)
/x;
print $fh $subseq."\n" if ($subseq);
}
close $fh;
}
my $tsEnd = Time::HiRes::time;
print "-" x 30 . "\n";
printf("snafu = %f\n", $tsEnd - $tsStart);
print "-" x 30 . "\n";
$tsStart = Time::HiRes::time;
for($i=1; $i<5000; $i++) {
open my $fh, '>', 'result.txt';
foreach my $row (@sequence) {
$row =~ s/.*(TGTAGACGTGACGATGTAACAC[ATCG]{100,250}).*/$1/;
$row =~ s/.*?([ATCG]{100,250}TGATACCGATCCCTAGAACAGAT).*/$1/;
print $fh $row."\n";
}
close $fh;
}
$tsEnd = Time::HiRes::time;
print "-" x 30 . "\n";
printf("Jasmine = %f\n", $tsEnd - $tsStart);
print "-" x 30 . "\n"; |