-#; shellwords.pl
-#;
-#; Usage:
-#; require 'shellwords.pl';
-#; @words = &shellwords($line);
-#; or
-#; @words = &shellwords(@lines);
-#; or
-#; @words = &shellwords; # defaults to $_ (and clobbers it)
+;# shellwords.pl
+;#
+;# Usage:
+;# require 'shellwords.pl';
+;# @words = &shellwords($line);
+;# or
+;# @words = &shellwords(@lines);
+;# or
+;# @words = &shellwords; # defaults to $_ (and clobbers it)
sub shellwords {
package shellwords;
while ($_ ne '') {
$field = '';
for (;;) {
- if (s/^"(([^"\\]+|\\[\\"])*)"//) {
+ if (s/^"(([^"\\]|\\.)*)"//) {
($snippet = $1) =~ s#\\(.)#$1#g;
}
- elsif (s/^'(([^'\\]+|\\[\\'])*)'//) {
+ elsif (/^"/) {
+ die "Unmatched double quote: $_\n";
+ }
+ elsif (s/^'(([^'\\]|\\.)*)'//) {
($snippet = $1) =~ s#\\(.)#$1#g;
}
+ elsif (/^'/) {
+ die "Unmatched single quote: $_\n";
+ }
elsif (s/^\\(.)//) {
$snippet = $1;
}