日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux执行perl脚本,如何从Perl脚本中运行Perl脚本?

發布時間:2023/12/9 linux 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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脚本?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。