--- Michael G Schwern <[EMAIL PROTECTED]> wrote:
> > 5.005 introduced qr//
> >
> > $ ~/Reference/5.005_04/bin/perl5.00504-32 -le '$r = qr/(p...)/; $^X
> =~ $r; print $1'
> > perl
>
> If you're using it for any serious amount of nesting (ie. building up
> a regex
> with a bunch of qr's) it didn't really stabilize until 5.6. I recall
> this
> from Email::Find and URI::Find. But for normal use its ok in 5.5.
FYI: Deeply nesting qr// constructs can have performance impacts.
ovid $ perl -le '$x=qr{x};$y = qr{y$x};print qr{$y};'
(?-xism:y(?-xism:x))
Perl will decompile the individual regexes back to strings and later
recompile them. This recompilation can produce less efficient regexes
than what you wrote. A better solution, if this turns out to impact
one's code, is to use the q{} and qq{} operators and nest them, though
when you use qq{} you'll have to remember to properly escape things.
Also, you'll want (?:) constructs in your code.
bin $ perl -le '$x=q{(?:x)};$y = q{(?:y$x)};print qr{$y};'
(?-xism:(?:y$x))
See Perl Best Practices "Constructing Regexes" (page 261) for more
information.
Cheers,
Ovid
--
If this message is a response to a question on a mailing list, please send
follow up questions to the list.
Web Programming with Perl -- http://users.easystreet.com/ovid/cgi_course/