use v5.10; use warnings; my $calculator = do{ use Regexp::Grammars; qr{ | | | | \( \) | \( \) }xms }; while (my $input = <>) { if ($input =~ $calculator) { use Data::Dumper 'Dumper'; warn Dumper \%/; } }