in reply to regex for regex?

The mantra "Only Perl can parse Perl" applies here. Regexen can be hidden in so many ways and things that look like regexs can be present in so many places that trying to find all regexes in a arbitary Perl script would be a very large problem. A trivial search for =~ and =! will find some (and may find some false hits). A search for m/ and s/ may find some more. A search for [\s=][ms][-`~!@#$%^&*(){}[\]:";',.<>/?\\|] may find a few more. But any simplistic search will be unreliable.


DWIM is Perl's answer to Gödel

Replies are listed 'Best First'.
Re^2: regex for regex?
by saintmike (Vicar) on Jun 26, 2006 at 22:51 UTC
    The mantra "Only Perl can parse Perl" has been proven wrong by PPI.

      My understanding from the documentation for PPI is that is analyses Perl Documents in isolation so I suspect there are simple cases where a regex may be provided by a module and used in the Perl Code being analysed that may not be recognised by PPI. However I don't have PPI available (it doesn't seem to be in ActiveState's ppm repositories) so I can't test that.

      Note that PPI doesn't claim to parse Perl Code, 'only' Perl Documents. I agree PPI very likely suffices for the OP's purpose, but it's not clear that PPI invalidates the mantra. :)


      DWIM is Perl's answer to Gödel

        Right. From the documentation for PPI:

        Since that time I've been able to prove to my own satisfaction that it is truly impossible to accurately parse Perl as both code and document at once. For the academics, parsing Perl suffers from the "Halting Problem".