use Text::ParseWords; @words = "ewords($delim, $keep, @lines); @words = &shellwords(@lines); @words = &old_shellwords(@lines);
The $keep
argument is a boolean flag. If true, the quotes are
kept with each word, otherwise quotes are stripped in the splitting
process. $keep
also defines whether unprotected backslashes
are retained.
A &shellwords() replacement is included to demonstrate the new package. This version differs from the original in that it will
_NOT_ default to using $_
if no arguments are given.
I personally find the old behavior to be a mis-feature.
"ewords() works by simply jamming all of @lines
into a
single string in $_
and then pulling off words a bit at a time
until $_
is exhausted.
Basically an update and generalization of the old shellwords.pl. Much code shamelessly stolen from the old version (author unknown).