my $text = 'perl monks'; my $query = qr{ (?monk) (?()(?{do_something_different()})) | (?

perl) (?(

)(?{do_something()})) }x; while($text =~ /$query/gi){}; sub do_something{ print "found perl\n"; } sub do_something_different{ print "found monk\n"; }