Fix quotewords
[p5sagit/p5-mst-13.2.git] / lib / Text / ParseWords.pm
index 8995138..f2e1514 100644 (file)
@@ -92,15 +92,15 @@ sub quotewords {
     local(@words,$snippet,$field,$_);
 
     $_ = join('', @lines);
-    while ($_) {
+    while (length($_)) {
        $field = '';
        for (;;) {
-            $snippet = '';
-           if (s/^"(([^"\\]|\\[\\"])*)"//) {
+           $snippet = '';
+           if (s/^"(([^"\\]|\\.)*)"//) {
                $snippet = $1;
                 $snippet = "\"$snippet\"" if ($keep);
            }
-           elsif (s/^'(([^'\\]|\\[\\'])*)'//) {
+           elsif (s/^'(([^'\\]|\\.)*)'//) {
                $snippet = $1;
                 $snippet = "'$snippet'" if ($keep);
            }
@@ -111,11 +111,11 @@ sub quotewords {
                 $snippet = $1;
                 $snippet = "\\$snippet" if ($keep);
             }
-           elsif (!$_ || s/^$delim//) {
+           elsif (!length($_) || s/^$delim//) {
                last;
            }
            else {
-                while ($_ && !(/^$delim/ || /^['"\\]/)) {
+                while ($_ ne '' && !(/^$delim/ || /^['"\\]/)) {
                   $snippet .=  substr($_, 0, 1);
                    substr($_, 0, 1) = '';
                 }