Windows 如何将perl脚本中的环境变量集导出到批处理shell?
我正在windows上使用批处理脚本执行perl脚本。 我正在批处理脚本中设置以下变量:Windows 如何将perl脚本中的环境变量集导出到批处理shell?,windows,perl,batch-file,Windows,Perl,Batch File,我正在windows上使用批处理脚本执行perl脚本。 我正在批处理脚本中设置以下变量: SET PATH_VAR=C:\Users\ 我可以访问perl中的PATH\u VAR,如下所示: my $path1 = $ENV{'PATH_VAR'} 我还想将perl中设置的环境变量导出到批处理。就像我现在做的相反。 有办法吗 附言: 我试过这个,但不起作用: $ENV{'PATH_Z'}="Hello World"; 对环境变量的更改不会影响父进程,这是它们工作方式的一部分,因此在Perl
SET PATH_VAR=C:\Users\
我可以访问perl中的PATH\u VAR
,如下所示:
my $path1 = $ENV{'PATH_VAR'}
我还想将perl中设置的环境变量导出到批处理。就像我现在做的相反。
有办法吗
附言:
我试过这个,但不起作用:
$ENV{'PATH_Z'}="Hello World";
对环境变量的更改不会影响父进程,这是它们工作方式的一部分,因此在Perl脚本中执行的任何操作都不能更改批处理脚本的环境变量。但是,从
exec()
、system()
或`
开始的任何子进程都会看到您在Perl脚本中所做的更改。对环境变量的更改不会影响父进程,这是它们工作方式的一部分,因此您在Perl脚本中所做的任何操作都不能更改批处理脚本的环境变量。但是,从exec()
、system()
或`
开始的任何子进程都会看到您在Perl脚本中所做的更改。唯一的方法是让Perl脚本输出shell语句,并让shell评估输出
Bash示例:
$ export FOO=123
$ echo $FOO
123
$ perl -e 'print "export FOO=456\n"' ; echo $FOO
123
$ $(perl -e 'print "export FOO=789\n"') ; echo $FOO
789
编辑:我看到OP使用的是Windows,所以这个答案不适用:-(唯一的方法是让Perl脚本输出shell语句,让shell计算输出 Bash示例:
$ export FOO=123
$ echo $FOO
123
$ perl -e 'print "export FOO=456\n"' ; echo $FOO
123
$ $(perl -e 'print "export FOO=789\n"') ; echo $FOO
789
编辑:我看到OP正在使用Windows,所以这个答案不适用:-(