是否可以通過傳遞數組作爲參數從Perl調用Expect腳本? 如果是的話,如何檢索數組中的期待像我們檢索非陣列數據:我可以通過傳遞一個數組作爲參數來調用Perl的Expect腳本嗎?
set value [lindex $argv 0]
是否可以通過傳遞數組作爲參數從Perl調用Expect腳本? 如果是的話,如何檢索數組中的期待像我們檢索非陣列數據:我可以通過傳遞一個數組作爲參數來調用Perl的Expect腳本嗎?
set value [lindex $argv 0]
我假設你是在談論一個Perl數組,這被稱爲在Tcl的列表。從Perl的:
system 'myscript.exp', @ary;
那麼你期待的腳本將有:
set list_of_arguments $argv
格倫,不知是否Saranyya會明白你的答案。我會提供一些可以幫助他的背景。
首先,Saranyya,請注意,您可以選擇Perl和Expect的各種不同組合。如果現有的Expect腳本做了一些您想要增強的功能,那麼您可以簡單地在Expect中編寫功能,而不是Perl; Expect是一種完全通用的語言,基本上可以完成Perl所做的一切。相反,如果您有一個需要預期功能的Perl應用程序,那麼幾乎可以肯定地將您需要的所有東西寫入 Perl,帶有Expect.pm;沒有必要構建一個單獨的期望過程。
最後,做你看起來描述的內容也是合理的,以及Glenn認爲你在做什麼:從Perl的調用獨立的期望過程。如果這樣做,如果真像格倫草圖,你的Perl程序包括
system 'myscript.exp', @ary;
那麼你期待的腳本訪問,通過$ :: argv的價值,這是一個列表傳遞給它的參數。我將稍微詳細說明這個例子:假設你通過系統傳遞一個主機名列表;那麼在期待你可能有用地具有
set list_of_hostnames $::argv
foreach hostname $list_of_hostnames {
do_something_valuable $hostname
}
一個過程的接口,另一相通值,而不是變量。當信息到達Expect時,它「不知道」它是Perl中的一個數組(例如)。你使用相同的技術來取消引用$ :: argv,但是你在Perl方面包裝了東西。
我改變了主意。經過進一步的思考,我決定格倫的回答可能與我的要求相符。不過,也許後者作爲前者的補充是有用的。 – 2010-10-12 12:26:45