使用單個標量參數在具有多個管道的Perl腳本中調用system()
。呼叫看上去或多或少是這樣的:以Perl中的單個標量參數調用system()調用的退出代碼
system("zcat /foo.gz | grep '^.{6}X|Y|Z' | awk '{print $2,$3,$4,$6}' | bzip2 > /foo.processed.bz2");
問題(foo.gz
)文件是相當大的,大約2GB的壓縮。我想這就是爲什麼它最初是通過系統調用完成的。
問題:
現在的問題是,這個系統調用似乎總是返回0,系統命令中的一個是否失效。我認爲這是因爲它通過sh -c '...'
被調用。那是對的嗎?
如果只傳遞一個標量參數,是否有方法檢查system()
調用是否成功?
有沒有更好的方式來處理這樣一個大文件,其方式相同或更高效(主要是速度方面)?
感謝您提供任何提示,因爲我對Perl並不熟悉。
如果你在perl中通過系統調用使用grep ...你不是用perl編程:) –
我知道,這是一些由別人編寫的舊Perl代碼,我也沒有真正體驗過它,什麼是組合:)無論如何,也許你給了我一些想法如何更好地以更優雅的方式做到這一點? – Haes
另外$ 2,$ 3部分引用變量在Perl代碼中,而不是在awk代碼中。因爲雙引號。 – XoR