如何将调用环境正确导出到Perl的子shell中?

Ped*_*rez 4 environment perl path

我正在尝试使用Perl脚本在我们拥有的工具(wpj)中添加某些目录.直接命令看起来像

 $ wpj add path/to/desired/library makefile.wpj

我想做一个脚本来自动执行此操作,因为必须完成很多这样的操作.但是,设置一组非常特殊的环境变量来制作'wpj'.如果我用Perl的反引号调用wpj,则调用失败.你可以看到下面的代码

$command = "wpj add library path\\to\\file.wpj \\path\\to\\add";
print $command."\n";
$result = `$command`;
print "->".$result."\n";
Run Code Online (Sandbox Code Playgroud)

为此我得到了

wpj: not found
Run Code Online (Sandbox Code Playgroud)

但是,来自shell的相同调用成功.有些东西没有正确导出,请你给我一些关于如何将调用环境导出到backquotes创建的子shell中的建议?

Vid*_*dul 6

检查PATH并根据需要修改其内容:

use Env qw(@PATH);

# check the PATH:
print join("\n", @PATH);

# modify its content:
push @PATH, "/usr/bin/wpj";
Run Code Online (Sandbox Code Playgroud)

模块的官方手册.

  • @Pedro Perez,是的.你不需要做任何特别的事情.孩子继承父母的环境. (2认同)