E:\Perl\site\lib\My>type Filter.pm #! perl -slw package My::Filter; use Filter::Simple; use Benchmark::Timer; our $t = Benchmark::Timer->new(); FILTER_ONLY regex => sub { $_ = "(?{{ \$My::Filter::t->start('$_$/') }})" . "(?:$_)" . "(?{{ \$My::Filter::t->stop('$_$/') }})"; }, ; sub report{ return $t->report() } return 1 if caller(); use strict; use My::Filter; my $stuff = 'abcdefghijklmnopqrstuvwxyz'; for (1..1000) { if ( $stuff =~ m[pqr] ) { $stuff =~ s/(\G(?:.{3})+?)(?<=...)(.)(.)/$1$3$2/g; } $_ = $stuff; my $OK = 1 if m[pqr]; } print $stuff; print '=' x 20, 'Timing of regexs in ', $0, '=' x 20; print My::Filter::report();