This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
(retracted by #12951)
[perl5.git] / lib / dotsh.pl
index 8e9d962..5be2413 100644 (file)
@@ -1,6 +1,13 @@
 #
 #   @(#)dotsh.pl                                               03/19/94
 #
+# This library is no longer being maintained, and is included for backward
+# compatibility with Perl 4 programs which may require it.
+#
+# In particular, this should not be used as an example of modern Perl
+# programming techniques.
+#
+#
 #   Author: Charles Collins
 #
 #   Description:
@@ -26,7 +33,9 @@
 #
 sub dotsh {
    local(@sh) = @_;
-   local($tmp,$key,$shell,*dotsh,$command,$args,$vars) = '';
+   local($tmp,$key,$shell,$command,$args,$vars) = '';
+   local(*dotsh);
+   undef *dotsh;
    $dotsh = shift(@sh);
    @dotsh = split (/\s/, $dotsh);
    $command = shift (@dotsh);
@@ -37,7 +46,7 @@ sub dotsh {
    $shell = "$1 -c" if ($_ =~ /^\#\!\s*(\S+(\/sh|\/ksh|\/zsh|\/csh))\s*$/);
    close (_SH_ENV);
    if (!$shell) {
-      if ($ENV{'SHELL'} =~ /\/sh$|\/ksh$|\/zsh$|\/csh$/) {
+      if ($ENV{'SHELL'} =~ /\/sh$|\/ksh$|\/zsh$|\/bash$|\/csh$/) {
         $shell = "$ENV{'SHELL'} -c";
       } else {
         print "SHELL not recognized!\nUsing /bin/sh...\n";
@@ -53,8 +62,8 @@ sub dotsh {
    open (_SH_ENV, "/tmp/_sh_env$$") || die "Could not open /tmp/_sh_env$$!\n";
    while (<_SH_ENV>) {
        chop;
-       /=/;
-       $ENV{$`} = $';
+       m/^([^=]*)=(.*)/s;
+       $ENV{$1} = $2;
    }
    close (_SH_ENV);
    system "rm -f /tmp/_sh_env$$";