reordering conditions in Win32.pm
[p5sagit/p5-mst-13.2.git] / lib / Text / ParseWords.pm
index 95f0e9b..e370f6f 100644 (file)
@@ -1,7 +1,7 @@
 package Text::ParseWords;
 
 use vars qw($VERSION @ISA @EXPORT $PERL_SINGLE_QUOTE);
-$VERSION = "3.1";
+$VERSION = "3.21";
 
 require 5.000;
 
@@ -49,7 +49,7 @@ sub nested_quotewords {
 
 sub parse_line {
        # We will be testing undef strings
-       local($^W) = 0;
+       no warnings;
 
     my($delimiter, $keep, $line) = @_;
     my($quote, $quoted, $unquoted, $delim, $word, @pieces);
@@ -63,7 +63,7 @@ sub parse_line {
                         ([\000-\377]*)        # and the rest
                       |                       # --OR--
                        ^((?:\\.|[^\\"'])*?)    # an $unquoted text
-                     (\Z(?!\n)|$delimiter|(?!^)(?=["']))  
+                     (\Z(?!\n)|(?-x:$delimiter)|(?!^)(?=["']))  
                                                # plus EOL, delimiter, or quote
                       ([\000-\377]*)          # the rest
                      /x;                      # extended layout
@@ -76,10 +76,12 @@ sub parse_line {
        }
         else {
            $unquoted =~ s/\\(.)/$1/g;
-           $quoted =~ s/\\(.)/$1/g if ($quote eq '"');
-           $quoted =~ s/\\([\\'])/$1/g if ( $PERL_SINGLE_QUOTE && $quote eq "'");
+           if (defined $quote) {
+               $quoted =~ s/\\(.)/$1/g if ($quote eq '"');
+               $quoted =~ s/\\([\\'])/$1/g if ( $PERL_SINGLE_QUOTE && $quote eq "'");
+            }
        }
-        $word .= ($quote) ? $quoted : $unquoted;
+        $word .= defined $quote ? $quoted : $unquoted;
  
         if (length($delim)) {
             push(@pieces, $word);
@@ -212,21 +214,27 @@ demonstrating:
 =over 4
 
 =item 0
+
 a simple word
 
 =item 1
+
 multiple spaces are skipped because of our $delim
 
 =item 2
+
 use of quotes to include a space in a word
 
 =item 3
+
 use of a backslash to include a space in a word
 
 =item 4
+
 use of a backslash to remove the special meaning of a double-quote
 
 =item 5
+
 another simple word (note the lack of effect of the
 backslashed double-quote)