我有两个perl脚本 a.pl 和 b.pl
在 a.pl 中,它按system("/usr/bin/perl ./b.pl");
在 b.pl 中,它会执行某些操作,然后将一些值分配给$aa
和$bb
现在在 a.pl 中调用 b.pl 后, a.pl 需要$aa
和{的值{strong}来自 b.pl 。
我做了研究,发现有人说要使用'导出'或将$bb
和$aa
设置为 b.pl
$bb
然而,经过一些试验,我没能完成它。
有人可以帮忙吗?感谢。
答案 0 :(得分:1)
当您通过system
调用它时,您正在调用子进程。你不能通过管道(例如stdout)获取任何东西。
你可能想要的是do './b.pl
;代替。更好的是,将b.pl放入b.pm,设置它的包,然后你可以require b;
并通过它的包访问它的全局变量。
答案 1 :(得分:1)
如果您出于某种原因需要将此作为两个应用程序而不是do
,use
或require
应用程序中的另一个perl脚本,那么您可以打印来自 b.pl 到STDOUT
print join('|', $aa, $bb);
然后在 a.pl 中读取并拆分
my ($aa, $bb) = split(/\|/, `/usr/bin/perl ./b.pl`);
如果您的$aa
或$bb
可能包含字符|
,请选择其他分隔符。
答案 2 :(得分:0)
如果b.pl是在没有本地声明的变量的情况下编写的(所以没有使用警告,使用strict,没有我的$ aa),你可以将文件读入变量并对其进行评估。否则,如果不修改b.pl,这是不可能的。一些可能的事情: