$fast = sub { my $match = qq@ return 1 if m!foo!o; @; my $code = eval "sub {$match ; return 0}"; return $code; }; #### while(<>) { next unless &{$fast}; } #### $match = qq@ return (\$1,\$2) if m!(foo)(bar)!; @;