[tpm] problems with what regex returns ... in context ?

Tom Legrady legrady at gmail.com
Fri May 10 16:00:41 PDT 2013

When a regex has a capture, the return value of m// is the list of matched
substrings. When it does not capture, it returns a boolean to indicate
whether it matched or not. That's why you can do:

if ( $line =~ /$pattern/o ) { .... }

Newer perls allow naming of captures within the RE. Read the Captures
section of perldoc perlre:

       Additionally, as of Perl 5.10.0 you may use named capture buffers and
       named backreferences. The notation is "(?<name>...)" to declare and
       "\k<name>" to reference. You may also use apostrophes instead of
       brackets to delimit the name; and you may use the bracketed
       backreference syntax.  It’s possible to refer to a named capture
       by absolute and relative number as well.  Outside the pattern, a
       capture buffer is available via the "%+" hash.


On Fri, May 10, 2013 at 4:47 PM, Quantum Mechanic <
quantum.mechanic.1964 at gmail.com> wrote:

> On Fri, May 10, 2013 at 1:33 PM, Quantum Mechanic <
> quantum.mechanic.1964 at gmail.com> wrote:
>> I would have tried "my" instead of the punctuation variables:
>> if (my @capture = /$regex/) {
>>     foreach @capture {
>>         do something;
>>     }
>> }
> That doesn't make any difference, @capture still (seems to get) the 1/true
> result code
> when there is no capturing.
> It should create a new @capture each time. It doesn't always capture
> something, right? I'll have to try it when I get home.
> _______________________________________________
> toronto-pm mailing list
> toronto-pm at pm.org
> http://mail.pm.org/mailman/listinfo/toronto-pm
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/toronto-pm/attachments/20130510/edb855e6/attachment.html>

More information about the toronto-pm mailing list