linux执行perl脚本,如何从Perl脚本中运行Perl脚本?
您當前的perl解釋器的位置可以在特殊變量$ ^ X中找到。如果perl不在您的路徑中,或者如果您有多個可用的perl版本,但是要確保您全面使用相同的Perl版本,這一點非常重要。
執行外部命令時,包括其他Perl程序,確定它們是否真正運行可能相當困難。檢查$?可以留下持久的精神傷疤,所以我更喜歡使用IPC::System::Simple(可從CPAN獲得):
use strict;
use warnings;
use IPC::System::Simple qw(system capture);
# Run a command,wait until it finishes,and make sure it works.
# Output from this program goes directly to STDOUT,and it can take input
# from your STDIN if required.
system($^X,"yourscript.pl",@ARGS);
# Run a command,and make sure it works.
# The output of this command is captured into $results.
my $results = capture($^X,@ARGS);
在上述兩個示例中,您希望傳遞給外部程序的任何參數都可以轉到@ARGS。在上述兩個示例中也避免了shell,這樣可以提供較小的速度優勢,并避免涉及shell元字符的任何不必要的交互。上面的代碼也期望你的第二個程序返回一個零退出值來表示成功;如果不是這樣,您可以指定允許的退出值的另外的第一個參數:
# Both of these commands allow an exit value of 0,1 or 2 to be considered
# a successful execution of the command.
system( [0,1,2],$^X,@ARGS );
# OR
capture( [0,2,@ARGS );
如果您有一個長期運行的過程,并且您希望在生成數據時處理其數據,那么您可能需要一個管道打開,或者是CPAN中更重的IPC模塊之一。
說完所有這一切,任何時候你需要從Perl調用另一個Perl程序,你可能希望考慮如果使用模塊是一個更好的選擇。開始另一個程序在啟動成本和在進程之間移動數據的I / O成本方面承擔了相當多的間接費用。它也顯著增加了錯誤處理的難度。如果您可以將外部程序轉換為模塊,您可能會發現它簡化了整體設計。
祝一切順利,
保羅
總結
以上是生活随笔為你收集整理的linux执行perl脚本,如何从Perl脚本中运行Perl脚本?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [vue] 你了解axios的原理吗?有
- 下一篇: LinuxCNC Stepconf设置教