This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add symlink support to Cwd::_vms_abs_path.
[perl5.git] / lib / dotsh.pl
index 5be2413..810ebc4 100644 (file)
@@ -27,9 +27,9 @@
 #         dependent upon. These variables MUST be defined using shell syntax.
 #
 #   Example:
-#      &dotsh ('/tmp/foo', 'arg1');
-#      &dotsh ('/tmp/foo');
-#      &dotsh ('/tmp/foo arg1 ... argN');
+#      &dotsh ('/foo/bar', 'arg1');
+#      &dotsh ('/foo/bar');
+#      &dotsh ('/foo/bar arg1 ... argN');
 #
 sub dotsh {
    local(@sh) = @_;
@@ -54,19 +54,17 @@ sub dotsh {
       }
    }
    if (length($vars) > 0) {
-      system "$shell \"$vars;. $command $args; set > /tmp/_sh_env$$\"";
+      open (_SH_ENV, "$shell \"$vars && . $command $args && set \" |") || die;
    } else {
-      system "$shell \". $command $args; set > /tmp/_sh_env$$\"";
+      open (_SH_ENV, "$shell \". $command $args && set \" |") || die;
    }
 
-   open (_SH_ENV, "/tmp/_sh_env$$") || die "Could not open /tmp/_sh_env$$!\n";
    while (<_SH_ENV>) {
        chop;
        m/^([^=]*)=(.*)/s;
        $ENV{$1} = $2;
    }
    close (_SH_ENV);
-   system "rm -f /tmp/_sh_env$$";
 
    foreach $key (keys(%ENV)) {
        $tmp .= "\$$key = \$ENV{'$key'};" if $key =~ /^[A-Za-z]\w*$/;