in reply to Improving performance
If I define it in qr/(?:[.,:;] ?| )/ and use the variable in the regular expression ...
This does not directly address your performance concerns, but when qr//-defined regex objects are interpolated into other regexes, either qr//, m// or s///, the process is more or less like string interpolation; the new regex does not somehow "call back" to the interpolated regex as a subroutine call within another subroutine would do.
To get a feel for this process, write and run (with full warnings and strictures) some code like the following, which just prints compiled regexes. (This is untested because I can't provide a working example at the moment.) Note that qr// automatically encapsulates its pattern in a (?:...) non-capturing group that preserves the regex modifier flags, so the non-capturing grouping within qr/(?:[.,:;] ?| )/ is redundant (but does no harm); try it both ways.
my $foo = qr/[.,:;] ?| /; print $foo, "\n"; my $bar = qr{ $foo+ (?: hic | hac | hoc) }xms; print $bar, "\n"; my $baz = qr{ $bar{42} f[eio]e }xms; print $baz, "\n";
Give a man a fish: <%-(-(-(-<
|
|---|