#!/usr/bin/perl use strict; use warnings; use Benchmark qw(:all) ; my $count = 5000; my $filename = 'TEST.dat'; my $DELIMITER = 'GGAGAGGG'; #my $DELIMITER = 'TTTTCATGAAGAAGATGAGAGACAAGATGAGAAAATAGTATCAGAGA'; my $regex = qr{\Q$DELIMITER}o; cmpthese($count, { 'index' => sub { open my $FH, '<', $filename; my $i; while (my $line = <$FH>) { my $pos = index $line, $DELIMITER; if ( $pos >= 0 ) { $i++; } } close $FH; }, 'regex_compiled_pos' => sub { open my $FH, '<', $filename; my $i; while (my $line = <$FH>) { my $pos; if ( $line =~ $regex ) { $i++; $pos = length $`; } } close $FH; }, 'regex_compiled' => sub { open my $FH, '<', $filename; my $i; while (my $line = <$FH>) { if ( $line =~ $regex ) { $i++; } } close $FH; }, 'regex_pos' => sub { open my $FH, '<', $filename; my $i; while (my $line = <$FH>) { my $pos; if ( $line =~ /\Q$DELIMITER/ ) { $i++; $pos = length $`; } } close $FH; }, 'regex' => sub { open my $FH, '<', $filename; my $i; while (my $line = <$FH>) { if ( $line =~ /\Q$DELIMITER/ ) { $i++; } } close $FH; }, });