我有两个 perl 脚本a.pl和b.pl
在a.pl中,它通过调用b.plsystem("/usr/bin/perl ./b.pl");
在b.pl 中,它会做一些事情,然后将一些值分配给$aa
and$bb
现在在a.pl调用b.pl之后,a.pl需要 b.pl 的值$aa
和$bb
来自b.pl的值。
我做了研究,发现人们说要使用“出口商”或设置$aa
并$bb
加入$ENV
b.pl
然而,经过一些试验,我未能完成它。
任何人都可以帮忙吗?谢谢。
我有两个 perl 脚本a.pl和b.pl
在a.pl中,它通过调用b.plsystem("/usr/bin/perl ./b.pl");
在b.pl 中,它会做一些事情,然后将一些值分配给$aa
and$bb
现在在a.pl调用b.pl之后,a.pl需要 b.pl 的值$aa
和$bb
来自b.pl的值。
我做了研究,发现人们说要使用“出口商”或设置$aa
并$bb
加入$ENV
b.pl
然而,经过一些试验,我未能完成它。
任何人都可以帮忙吗?谢谢。
如果您出于某种原因需要将其作为两个应用程序而不是应用程序do
中use
的require
另一个 perl 脚本来执行,那么您可以将结果从b.pl打印到 STDOUT
print join('|', $aa, $bb);
然后在a.pl中阅读并拆分它
my ($aa, $bb) = split(/\|/, `/usr/bin/perl ./b.pl`);
如果您的$aa
or$bb
可能包含字符|
,请选择不同的分隔符。
当您通过 调用它时system
,您正在调用一个子进程。您无法通过管道(例如标准输出)从中获得任何东西。
您可能想要的是do './b.pl
;反而。更好的是,将 b.pl 放入 b.pm,设置它的包,然后你可以require b;
通过它的包访问它的全局变量。
如果 b.pl 是在没有本地声明的变量的情况下编写的(因此不使用警告,使用严格,不使用我的 $aa),您可以将文件读入变量并对其进行评估。否则,如果不修改 b.pl,这将是不可能的。一些可能的事情: