Perl中的"do"函数

GJ.*_*GJ. 2 perl

最近,我有一个perl脚本,使用"do"调用另一个perl脚本; 即.

do "./script2.pl $arg1 $arg2";

我的script2.pl被设计为使用2个参数.

但是,以上述方式调用script2.pl不会将参数传递给script2.pl.

我知道有另一种方法使用"system",但我的script1.pl需要通过"require"获取一些变量值.

我可以实际使用"do"并将参数传递给我的script2吗?

mob*_*mob 12

如果您正在调用的脚本期望参数,则它将在变量中期望它们@ARGV.如果您正在使用do,则@ARGV调用脚本中将显示调用脚本中的内容.

{
    local @ARGV = ($arg1, $arg2);
    do './script2.pl';
}
Run Code Online (Sandbox Code Playgroud)

local像这样使用将恢复@ARGV块末尾的旧值,有点像说

@ARGV_old = @ARGV;
@ARGV = ($arg1,$arg2);
do './script2.pl';
@ARGV = @ARGV_old;
Run Code Online (Sandbox Code Playgroud)