1

所以我需要从另一个脚本中调用一些 perl 脚本。为了让它从终端工作,我需要去 bash 然后更改 PATH:

 export PATH=$PATH:/home/lsk250/www/portfolio

现在我需要将它作为 CGI 运行并从浏览器调用它,但显然当我尝试从浏览器调用脚本时,PATH 未设置,因此脚本无法找到所需的程序。如何从 perl 脚本中更改 PATH?我尝试了以下方法,但没有成功:

system "export PATH=\$PATH:/home/lsk250/www/portfolio";

$ENV{PATH} = '/home/lsk250/www/portfolio';
exec 'env',cwd().'/'.$0,@ARGV;

有任何想法吗?

4

2 回答 2

3
$ENV{PATH} = "$ENV{PATH}:/home/lsk250/www/portfolio";

确实是正确的。Perl 等价于sh's

export PATH="$PATH:/home/lsk250/www/portfolio"

与您所说的相反,后续exec将使用此路径来定位可执行文件,并且该可执行文件将看到更新的 PATH。

您似乎误诊了问题。实际发生了什么?是exec失败吗?如果是这样,它返回了什么错误?

于 2012-11-14T03:00:13.337 回答
1

2个解决方案:

my $myPath = "/foo/bar";
exec("PATH=$PATH:$myPath command");

或者

my $myPath = "/foo/bar";
exec("$myPath/command");
于 2012-11-14T02:53:21.370 回答