in reply to Re: Re: Re: Re: regex "o" modifier
in thread regex "o" modifier

hmm.. yup, gotcha there.. shouldn't have added that last bit.

ok.. knew I saw something somewhere.. in "Programming Perl" it has the example:

$regex = qr/$pattern/; $string =~ /foo${regex}bar/; # interpolate into larger patterns

..and then the comment, "This time, Perl does recompile the pattern, but you could always chain several qr// operators together into one."

So would they maybe be suggesting something more like:

my $re = qr!yes|no!; my $re2 = qr!\sthankyou!; my $bigre = $re.$re2; print "polite yes or no\n" if "yes thankyou" =~ $bigre;

hmm.. on further thought, that doesn't seem right either. Would $re & $re2 each be stringified in that operation? If so that would mean that $bigre would simply be eq to the string '(?-xism:yes|no)(?-xism:\sthankyou)'

The only other thing I can think they mean is:

my $bigre = qr!yes|no!.qr!\sthankyou!;

But I really don't see the point in that... Anyone know what they mean by "chain several qr// operators together"?

cheers,

J

Replies are listed 'Best First'.
Re^6: regex "o" modifier ("chaining")
by Aristotle (Chancellor) on May 07, 2003 at 06:07 UTC
    It says chaining, not concatenating.
    my $re = qr!yes|no!; my $re2 = qr!${re}\sthankyou!; print "polite yes or no\n" if "yes thankyou" =~ $re2;

    Makeshifts last the longest.

      but that's the same as what they refer to as "interpolate into larger patterns". They offer chaining as an alternative.. seemingly to avoid re-compilation..