在 perl script 底肚用 open 拿到系統執行的結果

[客家話, hak-Hant-TW]

Perl script 可以用 system(); 來執行外部的程式,偷懶時當好用。 毋過 system(); 有一隻麻煩: 執行結果會直接丟到 stdout,script 自家拿不到結果,是講 script 會拿到執行結果做下一步動作,就要用其他方法了,用 open 加 pipe 就可以做到,像要用 find 尋到全部的 .txt 檔,一隻一隻撈拒打開來,就可以按仔寫:

open FILES, "/usr/bin/find *.txt |"
while (<FILES>) {
  open(FILE, $_);
}

第一隻 open 那邊會存下結果放到 FILES,記得盡後背要加一隻 ‘|’ (pipe) 來導向,用 while 一行一行的撈他印出來。第二隻 open 就是正經來打開檔案了,按仔寫毋會太麻煩,毋夠跨平台的能力較差就是。

2 thoughts on “在 perl script 底肚用 open 拿到系統執行的結果

Leave a Reply

Your email address will not be published. Required fields are marked *