I just wrote this code in Perl5:

    $stuff = (defined($1)?$1:$2) if /^\s*(?:"(.*?)"|(\S+))/;

This is a common practice for me when I parse configuration and data
files whose formats I define. It's nice to be able to quote fields that
have spaces, and this is an easy way to parse the result.

In Perl6, it looks like what I would like here is very close, but I'm
not sure. Certainly, I could do:

    $stuff = ($1 // $2) if m{^\s*["(.*?)"|(\S+)]};

But I would far prefer:

    $stuff = $field if m{^\s*[
        "(.*?)"         {let $field=$1} |
        (\S+)           {let $field=$2}]};

even though it's longer.

Is this possible, or does the underlying implementation of hypothetical
variables pretty much rule it out?


Reply via email to