2013-11-20 70 views
0

我想在一個循環中執行一個安裝程序,並且每次它必須啓動安裝程序。但是一旦循環被執行一次,它會拋出下面的錯誤並停止腳本。有沒有辦法阻止它?如何在一個循環中產生一個安裝程序

my $exp = Expect->new; 
my $path="/opt/sample/Installer.pl"; 
for(my $i=0;$i<$a;$i++){ 
    $exp->spawn($path) or die "Cannot spawn $path: $!\n"; 
    .. 
    .. 
    .. 
} 

錯誤:

Cannot reuse an object with an already spawned command at Installer.pl line 52 

期待文件說:

另外請注意,你不能重複使用的對象已經產生了命令,即使該命令已退出。對不起,但你必須分配一個新的對象。

有沒有辦法解決這個問題。

+0

你還沒有提到你正在使用哪個模塊,所以任何人如何回答你的問題,除了猜測?另外,你的代碼中有一個沒有引號的字符串,這意味着你的代碼不能編譯。永遠不要這樣做:始終剪切並粘貼代碼並確保它能正常工作,並且最好能夠複製您的問題。 – TLP

+0

抱歉。我從perl使用Expect模塊並嘗試在循環中觸發安裝。我在我的代碼中引用了字符串。我忘了在這裏做。將udpate它。 – Leo

+0

如果你在循環中移動了'my $ exp = Expect-> new;',你的問題可能會解決。 – TLP

回答

2

張貼作爲回答的評論:

也許你的問題是,如果你移動my $exp = Expect->new;循環內解決。

這將使您的Expect對象超出每個循環迭代的範圍。請注意,我不知道這是否是處理Expect對象的正確方法。

相關問題