[Melbourne-pm] Extracting a parenthesized fragment from a string

Timothy S. Nelson wayland at wayland.id.au
Fri Sep 11 22:05:59 PDT 2009


On Sat, 12 Sep 2009, Daniel Pittman wrote:

> "Timothy S. Nelson" <wayland at wayland.id.au> writes:
>> On Fri, 11 Sep 2009, Sam Watkins wrote:
>>> On Fri, Sep 11, 2009 at 07:05:45PM +1000, Robert Norris wrote:
>>>> So, what's wrong here? And is there an easier way to do this? Note that
>>>> I'm restricted to Perl 5.6, which sucks as I'd really like to try the
>>>> PARNO stuff that came with 5.10.
>>>
>>> I think normal regexps aren't the right tool for this, you can do it
>>> easily in a couple of lines of C, but that method would be somewhat slow
>>> in perl.  But given that you're dealing with IMAP, the network is going
>>> to be a lot slower, so you might as well just do it with a for loop over
>>> the characters and count parentheses, rather than some totally obscure
>>> regexp hack.
>>
>> Incidentally, this is something that Perl 6 will solve.  Because it has
>> grammars.  You could use Parse::RecDescent and an IMAP grammar, but that
>> would be overkill in a P5 situation.  P6 on the other hand... :).
>
> I am curious why you say that using Parse::RecDescent is wrong with Perl5?
>
> I consider it likely to be more work than is strictly needed, and perhaps
> difficult to feed a protocol stream rather than a complete text, into, but
> I can't see why it would be any less right than in Perl6.
>
> Do you mind explaining further?  You obviously see something I don't, and
> I would love to understand what. :)

 	No, I think we're seeing the same thing here.  I agree about feeding 
in the stream -- I had a patch for Parse::RecDescent that made that easy which 
I sent Damian, but I don't know that he ever applied it.

 	I'm assuming that this is something where he has only a small amount 
of text (which may be an invalid assumption), and a pretty good idea of what 
it contains, and yes, Text::Balanced is probably exactly right for this.  I 
basically thought that for something this size, Parse::RecDescent might be 
more hassle than it's worth.  OTOH, it might make it easier to port to Perl 6 
in another 2 years.

 	:)


---------------------------------------------------------------------
| Name: Tim Nelson                 | Because the Creator is,        |
| E-mail: wayland at wayland.id.au    | I am                           |
---------------------------------------------------------------------

----BEGIN GEEK CODE BLOCK----
Version 3.12
GCS d+++ s+: a- C++$ U+++$ P+++$ L+++ E- W+ N+ w--- V- 
PE(+) Y+>++ PGP->+++ R(+) !tv b++ DI++++ D G+ e++>++++ h! y-
-----END GEEK CODE BLOCK-----



More information about the Melbourne-pm mailing list