Stories
Slash Boxes
Comments
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More | Login | Reply
Loading... please wait.
  • my $VALUE  = do {
        use re 'eval';
        qr/(?>($QUOTED|$NUM))(??{'.' eq $^N ? FAIL : SUCCEED})/;
    };

    my $text = 'name => "foo", fav.num => 3';
    my @text = split /$VALUE/ => $text;
    print Dumper \@text;
    • Very interesting. I suspect it would take me a while to debug, but I've discovered that while this passes my test case wonderfully, it fails miserably when using that in the Lexer.pm [plover.com] example from HOP. My test case is clearly not representing the problem as well as I thought since others are having this problem on the Perlmonks site.

  • Do you really need a deferred pattern there? I’d write it like so:

    qr/(?:$QUOTED|$NUM)(?(?{ '.' eq $+ })$FAIL)/;

    (which of course implies variables rather than constants.)

    Now given that, you get a zero-length match:

    $VAR1 = [
              'name => ',
              '"foo"',
              ', fav',
              '',
              '.num => ',
              '3'