我有两个Perl脚本a.pl和b.pl如何从perl脚本中调用的perl脚本获取变量?
在a.pl,它调用b.pl通过system("/usr/bin/perl ./b.pl");
在b.pl它会做一些事情,然后分配一些值$aa
和$bb
现在在a.pl在它呼叫b.pl,a.pl需要值$aa
和$bb
从b.pl。
我做了研究,发现人说,使用“出口”或设置$aa
和$bb
是在$ENV
b.pl
一些试验我没能完成它后然而。
任何人都可以帮忙吗?谢谢。
我有两个Perl脚本a.pl和b.pl如何从perl脚本中调用的perl脚本获取变量?
在a.pl,它调用b.pl通过system("/usr/bin/perl ./b.pl");
在b.pl它会做一些事情,然后分配一些值$aa
和$bb
现在在a.pl在它呼叫b.pl,a.pl需要值$aa
和$bb
从b.pl。
我做了研究,发现人说,使用“出口”或设置$aa
和$bb
是在$ENV
b.pl
一些试验我没能完成它后然而。
任何人都可以帮忙吗?谢谢。
当你通过system
调用它时,你正在调用一个子进程。你不能通过管道获得任何东西(比如标准输出)。
你可能想要的是do './b.pl
;代替。更好的是,将b.pl放入b.pm,设置其包装,然后您可以通过其包装访问其全局变量。
如果出于某种原因需要做到这两个应用程序,而非do
,use
或require
另一perl脚本的应用程序,那么你可以从b.pl将结果输出到标准输出
print join('|', $aa, $bb);
然后在a.pl阅读并把它分解
my ($aa, $bb) = split(/\|/, `/usr/bin/perl ./b.pl`);
如果您$aa
或$bb
可能包含字符|
,请选择不同的分隔符。
如果b.pl没有使用本地声明的变量(因此没有使用警告,请使用strict,没有我的$ aa),您可以将该文件读入一个变量并对其进行评估。否则,这将不可能修改b.pl.有几件事情是可能的: