#! /usr/bin/perl use warnings; use strict; use Benchmark qw{ cmpthese }; use Test::More; print $], "\n"; open my $W, '<', '/var/lib/dict/words' or die; my @words = <$W>; close $W; my $s = '(.)(.)(.)\3\2\1'; my $re = qr/$s/; my $tab = { re => eval qq, qr => sub { grep /$re/, @words }, qro => sub { grep /$re/o, @words }, s => sub { grep /$s/, @words }, so => sub { grep /$s/o, @words }, }; my $n = $tab->{re}->(); is $tab->{$_}->(), $n, $_ for qw( qr qro s so ); done_testing(); cmpthese(-5, $tab);