如何在 Perl 脚本上使用“do”并避免多个子例程定义?
我正在尝试从另一个 Perl 脚本调用 Perl 脚本。我完成此操作的方式如下:
local @ARGV = (
$arg1,
$arg2
);
do 'perl_script.pl';
我使用 'do' 而不是使用 'system()' 的原因是这个旧代码库涉及调用多个 Perl 脚本,这些脚本又调用多个 Perl 脚本(现在我当然可以将所有内容重构为 Perl 模块,但那不是在这一点上值得)。
使用 'do' 而不是 'system()' 可以更轻松地使用 '-d' 标志进行调试,并避免不必要的系统调用。我遇到的问题是,如果多次调用相同的 perl 脚本,“do”将失败,因为 Perl 脚本中定义了子例程,并且多次调用脚本会给我留下“子例程重新定义”错误。
除了“做”或某种忽略重新定义的子例程的方法之外,还有其他方法可以做到这一点吗?