如何在Perl中设置环境变量?
我想设置$HOME一个不同于默认目录的目录.
我正在尝试使用Perl设置环境变量.它应该在外部(在当前shell中)将此变量导出到脚本中.
我试过了:
`setenv X1 /p/fsd`
system("setenv X1 /p/fsd") == 0 or die "failed:$?"
system command "setenv X1 /p/fsd" failed: -1
$ENV{"X1"} = "/p/fsd";
Run Code Online (Sandbox Code Playgroud)
似乎没有什么工作.
如果重要我正在使用TCSH.
我有两个Perl脚本以及GIT钩子脚本.在那里我正在验证GIT工作流程.这是调用堆栈的脚本.
pre-push - > unpush-changes - > dependency-tree
unpush-changes perl脚本中有一个for循环,它将调用dependency-tree perl脚本.
前推
system("unpushed-changes");
my $errorMsg = $ENV{'GIT_FLOW_ERROR_MSG'}// '';
if($errorMsg eq "true"){
print "Error occured!";
}
Run Code Online (Sandbox Code Playgroud)
unpush-changes.pl
for my $i (0 .. $#uniqueEffectedProjectsList) {
my $errorMsg = $ENV{'GIT_FLOW_ERROR_MSG'}// '';
if($errorMsg ne "true"){
my $r=system("dependency-tree $uniqueEffectedProjectsList[$i]");
}else{
exit 1;
}
}
Run Code Online (Sandbox Code Playgroud)
dependency-tree.pl
if(system("mvn clean compile -DskipTests")==0){
print "successfully build";
return 1;
}else{
$ENV{'GIT_FLOW_ERROR_MSG'} = 'true';
print "Error occured";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在我的依赖树脚本中,如果发生错误,我已经设置了ENV变量,并且将在unpush-changes脚本中的每次迭代中进行检查.但是它的ENV值为空而不是true.我也尝试返回一些值,如果失败并尝试验证它,但似乎它也没有工作.所以我的要求是我如何在所有脚本之间共享一个全局变量.如果有更好的方法,请告诉我.