This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
charnames: Abbreviations wrong on certain C1 controls
[perl5.git] / lib / shellwords.pl
index 1c45a5a..b562f5f 100644 (file)
@@ -1,48 +1,19 @@
+warn "Legacy library @{[(caller(0))[6]]} will be removed from the Perl core distribution in the next major release. Please install it from the CPAN distribution Perl4::CoreLibs. It is being used at @{[(caller)[1]]}, line @{[(caller)[2]]}.\n";
+
+;# This legacy library is deprecated and will be removed in a future
+;# release of perl.
+;#
 ;# shellwords.pl
 ;#
 ;# Usage:
 ;#     require 'shellwords.pl';
-;#     @words = &shellwords($line);
+;#     @words = shellwords($line);
 ;#     or
-;#     @words = &shellwords(@lines);
+;#     @words = shellwords(@lines);
 ;#     or
-;#     @words = &shellwords;           # defaults to $_ (and clobbers it)
+;#     @words = shellwords();          # defaults to $_ (and clobbers it)
 
-sub shellwords {
-    package shellwords;
-    local($_) = join('', @_) if @_;
-    local(@words,$snippet,$field);
+require Text::ParseWords;
+*shellwords = \&Text::ParseWords::old_shellwords;
 
-    s/^\s+//;
-    while ($_ ne '') {
-       $field = '';
-       for (;;) {
-           if (s/^"(([^"\\]|\\.)*)"//) {
-               ($snippet = $1) =~ s#\\(.)#$1#g;
-           }
-           elsif (/^"/) {
-               die "Unmatched double quote: $_\n";
-           }
-           elsif (s/^'(([^'\\]|\\.)*)'//) {
-               ($snippet = $1) =~ s#\\(.)#$1#g;
-           }
-           elsif (/^'/) {
-               die "Unmatched single quote: $_\n";
-           }
-           elsif (s/^\\(.)//) {
-               $snippet = $1;
-           }
-           elsif (s/^([^\s\\'"]+)//) {
-               $snippet = $1;
-           }
-           else {
-               s/^\s+//;
-               last;
-           }
-           $field .= $snippet;
-       }
-       push(@words, $field);
-    }
-    @words;
-}
 1;