0

期待するモジュールで、期待している式が一致しない場合、プログラムの実行を停止してループから抜け出す方法。パターンが一致しなくてもスクリプトを実行し続けるためです。

元:

#!/usr/bin/perl -w    
use Expect;    
my $handle = new Expect;    
$handle = Expect->spawn("telnet 192.168.1.1");    
$handle->expect(10,'re','sdhj: ');     #The expected string [sdhj: ]is not matching , but even then it goes on executing the below lines    
$handle->send("system\r");    
$handle->expect(10,'re','Password: ');    
$handle->send("12345\r");    

私が望むのは、期待される式が一致しない場合、プログラムの実行をエラーメッセージで停止する必要があるということです。

4

2 に答える 2

2

このような単純なケースor dieでは、エラー メッセージを表示する場所を追加するだけです (以下のエラー メッセージを好きなように変更してください)。

$handle->expect(10,'re','sdhj: ') or die "Didn't match [sdhj: ] $!"

もう少し複雑な場合は、Try::Tinyモジュールを調べてみてください。

于 2013-07-02T06:00:38.293 に答える
0

試す:

my $timeout = 10;
my $pattern = 'sdhj:';
$handle->expect($timeout,
                'timeout', sub {die "did not match $pattern in $timeout seconds"},
                '-re',$pattern
);

ドキュメント: https://metacpan.org/module/RGIERSIG/Expect-1.21/Expect.pod#object-expect-timeout-match_patterns

于 2013-07-02T09:55:17.447 に答える