2013-11-20 3 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 Module을 사용 중이며 루프에서 설치를 시작하려고합니다. 내 코드에서 문자열을 인용했습니다. 나는 그것을 여기에서하는 것을 잊었다. 그것을 우습게 만들 것입니다. – Leo

+0

루프 내에서'my $ exp = Expect-> new;를 이동하면 문제가 해결 될 것입니다. – TLP

답변

2

답변으로 코멘트를 게시 : 당신은 루프 내에서 my $exp = Expect->new;를 이동 한 경우

아마 문제가 해결 될 것입니다.

이렇게하면 각 루프 반복에 대해 Expect 개체가 범위를 벗어납니다. 이것이 Expect 객체를 처리하는 적절한 방법인지는 모르겠다.

관련 문제