Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何将perl脚本中的环境变量集导出到批处理shell?_Windows_Perl_Batch File - Fatal编程技术网

Windows 如何将perl脚本中的环境变量集导出到批处理shell?

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

我正在windows上使用批处理脚本执行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,所以这个答案不适用:-(