use Text::ParseWords; @words = quotewords($delim, $keep, @lines);
quotewords() accepts a delimiter (which can be a regular expression)
and a list of lines, and then breaks those lines up into a list of
delimiter-separated words. It ignores delimiters that appear inside
single or double quotes.
$keep argument is a Boolean flag. If it is false, then quotes
are removed from the list of words returned by
otherwise, quotes are retained.
The value of
$keep also affects the interpretation of backslashes.
$keep is true, then backslashes are fully preserved in the
returned list of words. Otherwise, a single backslash disappears and a
double backslash is returned as a single backslash. (Be aware, however,
that, regardless of the value of
$keep, a single backslash occurring
within quotes causes a Perl syntax error - presumably a bug.)