in reply to Re^2: Parser Performance Question
in thread Parser Performance Question

> Please, stop talking in riddles.

Riddles are an efficient instrument for motivation in didactics. =)

For instance a friend of mine spends loads of time in hacker competitions... ;-)

> Do you mean "a\\"b"?

What do you think? xD

Cheers Rolf
(addicted to the Perl Programming Language and ☆☆☆☆ :)
Je suis Charlie!

update

Replies are listed 'Best First'.
Re^4: Parser Performance Question (updated)
by Eily (Monsignor) on Oct 06, 2017 at 01:44 UTC

    The last two are still incorrect, as q< \\" > will be parsed as an escaped quote. /" (?: [^"\\] | \\. )* "/sx is the bestest solution :-P

    Edit: except when I'm an idiot and confuse (?= for (?:

      > q< \\" > will be parsed as an escaped quote

      I don't understand, it IS an escaped quote and it works for me:

      DB<175> $re = qr/ " (?: \\\\ | \\" | [^"] )* " /x; DB<176> p $a= q<x "..\\".." x> x "..\".." x DB<177> $a =~ /$re/; print $& "..\".."

      update

      maybe you should show us how you'd escape a double-quote.

      Cheers Rolf
      (addicted to the Perl Programming Language and ☆☆☆☆ :)
      Je suis Charlie!

        Meh, this will teach me about posting when I can't test. I meant q< \\\\" >; but thought the \ wouldn't escape the next one. The case where the \ just before the " is litteral because escaped, so it can't escape the ".

        use v5.20; use Data::Dump qw( pp ); my $str = <<STR; " .. \\\\" .. " STR print $str; my %re = (LanX => qr/ " (?: \\\\ | \\" | [^"] )* " /x, Eily => qr/ " (?: [^\\] | \\. )* " /x); $str =~ /$re{$_}/ and say "$_ found $&" for keys %re;
        " .. \\" .. " Eily found " .. \\" .. " LanX found " .. \\"