Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Re: Text::ParseWords

by derby (Abbot)
on Oct 06, 2001 at 05:22 UTC ( #117152=note: print w/ replies, xml ) Need Help??

in reply to Text::ParseWords

Brother Kozz,
You have committed no sins, you're soul is clean. Looking at Text::Parsewords, the reqex is kinda of hairy and doesn't handle the case you've thrown at it. (my numbers)

1. while (length($line)) { 2. ($quote, $quoted, undef, $unquoted, $delim, undef) = 3. $line =~ m/^(["']) # a $quote 4. ((?:\\.|(?!\1)[^\\])*) # and $quoted text 5. \1 # followed by the same quote 6. ([\000-\377]*) # and the rest 7. | # --OR-- 8. ^((?:\\.|[^\\"'])*?) # an $unquoted text 9. (\Z(?!\n)|(?-x:$delimiter)|(?!^)(?=["'])) # plus EOL, delimiter, or quote 10. ([\000-\377]*) # the rest 11. /x; # extended layout 12. return() unless( $quote || length($unquoted) || length($delim));
In your case, we fail the first part of the regex (lines 3-5) because we only have a single quote. We also fail the second part of the regex (lines 8-10) because we do start with a quote. Since we've failed the match, $quote is undef, $unquoted is undef and $delim is undef. As a result of them all being undef, an empty list is returned.
Maybe some of the more regex-y inclined brothers can think of a replacement regex. It hurts me just to read the ones like this.

Comment on Re: Text::ParseWords
Download Code

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (2)
As of 2015-10-09 03:44 GMT
Find Nodes?
    Voting Booth?

    Does Humor Belong in Programming?

    Results (233 votes), past polls