Can you reverse the string and use lookahead?
return split( m|(?=$sep)|, reverse ${$buf_ref} ) if
wantarray ;
--- Uri Guttman <[EMAIL PROTECTED]> wrote:
>
> in file::slurp i currently split the file into lines
> (or records based
> on $/) using this code:
>
> return split( m|(?<=$sep)|, ${$buf_ref} ) if
> wantarray ;
>
> where $sep is set from $/.
>
> that works correctly and is fast. but it has one
> flaw, it can't do
> paragraph mode since lookbehind can't handle
> variable width regexes as
> \n\n+ is. so i am looking for an m// solution that
> properly splits a
> buffer into records. it is not as easy as it seems.
> it has to behave
> exactly like the split does. there are several
> corner cases such as an
> empty file and a partial line ending a file. even a
> normal file of lines
> is tricky as you don't want to return an bogus empty
> line after the last
> real line. here are a few broken attempts to help
> you avoid pitfalls:
>
> /(.*?$sep|.+)/sg # doesn't handle an empty file
> /.*?(?:$sep|\z)/gs # adds a bogus empty line at
> the end
>
> i already passed this problem to a top regex person
> and he sent me the
> second one above (obviously untested! :).
>
> so fame, glory and an acknowledgement in the new
> release all go to the
> valiant warrior who solves this.
>
> let the fl^Wgames begin!
>
> uri
>
> --
> Uri Guttman ------ [EMAIL PROTECTED] --------
> http://www.stemsystems.com
> --Perl Consulting, Stem Development, Systems
> Architecture, Design and Coding-
> Search or Offer Perl Jobs
> ---------------------------- http://jobs.perl.org
>
=====
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Quantum Mechanics: The dreams stuff is made of
__________________________________
Do you Yahoo!?
Yahoo! Mail - Helps protect you from nasty viruses.
http://promotions.yahoo.com/new_mail