Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re^4: Splitting on escapable delimiter

by Roy Johnson (Monsignor)
on Mar 31, 2008 at 19:55 UTC ( #677628=note: print w/ replies, xml ) Need Help??


in reply to Re^3: Splitting on escapable delimiter
in thread Splitting on escapable delimiter

That's weird. I'm trying to figure out why mine takes another pass after encountering end of string (even if I specify that the separator can be end-of-string). Meanwhile, I'll point out that your method finds only one field in '@' (instead of two empty ones — if there's no newline after the @).

Update: this seems to work:

my @pieces = /(?:^|\G@)((?:#.|[^@])*)/sg;
Still don't know why I couldn't get it to realize it had hit end of string. My guess is, if end-of-string is not required to match, it takes another shot to make sure nothing matches.

Caution: Contents may have been coded under pressure.


Comment on Re^4: Splitting on escapable delimiter
Download Code
Re^5: Splitting on escapable delimiter
by ikegami (Pope) on Mar 31, 2008 at 21:49 UTC

    Still don't know why I couldn't get it to realize it had hit end of string

    It's seen as somewhat of a bug. It happens when the search expression can match a zero length string. In the followig, the parens indicate what the three passes of your earlier s/// matches:

    (a@)(b)()

    Or in terms of @- and @+:
    pass@-@+
    102
    223
    333

    The /g loop ends when the fourth pass matches the same thing as the third pass and pos+1 is beyond the end of the string.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://677628]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (5)
As of 2015-07-05 02:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (60 votes), past polls