2011-11-04 17 views
0

我正在嘗試創建一個頂級腳本,該腳本將調用大約35個其他腳本,每個腳本將嘗試修改/創建文本文件。不是最好的做事方式,也不是最有趣的方式,但必須做到。Perl:找出哪些文件是由當前腳本中調用的另一個腳本創建/修改的

我用'system'命令調用每個腳本,但我想知道哪些方法可以找出哪些文件是由每個被調用的腳本創建/修改的。

最無干擾的方法是在運行子腳本之前和之後簡單地記下工作目錄中所有文件的時間戳,但我擔心可能不夠健壯。

所以我想知道在Perl中是否有一個模塊/方法,我可以快速將所有的子腳本放入所有的文件操作並將其作爲某種返回值傳遞給調用腳本?

所有的幫助非常感謝和其他想法非常歡迎!

歡呼

+0

您可以使用strace運行腳本並查找fopen等。但是,這可能不是特別容易或強大。 –

+1

當你創建或修改一個文件(例如'Created file:$ name_of_file'或'Modified file:$ name_of_file')時,你可以讓這些腳本打印一些東西,然後在你的頂級腳本中爲每個腳本打開一個輸出管道,爲正確的輸出。 – 2011-11-04 16:48:55

+0

對於[PerlMonks](http://www.perlmonks.org/),這可能是一個好問題,因爲你似乎對進入Perl的膽量感興趣 – jwd

回答

1

a'r的建議,我會忍不住用strace。調用system()與調用該包裝替換:

那麼你就只能修改,而不是所有的子腳本的父腳本。

-eopen參數到strace只過濾掉open調用。這也將捕獲到fopen(這是一個C庫例程,而不是系統調用)的調用。

+0

感謝你!我現在解析strace輸出來獲得我需要的東西。 – mjason

相關問題