我有兩個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.有幾件事情是可能的: