1

私は自分のコードを見てきましたが、次のエラーがどこにあるのかわかりません:uninitialized value $match in string eq perl

基本的に、コードは TELNET で複数のデバイスに接続し、接続を閉じます。ユーザーとそのパスワードをテストして、有効期限が切れているものを確認するだけです。接続すると成功メッセージが表示され、それ以外の場合は失敗メッセージが表示されます。

初期化されていない値のエラーが発生する理由がわかりません。これは私のプロジェクトに使用しているコードです:

$telnet = new Net::Telnet (
    Errmode => "return", 
    Port => $puerto, 
    Input_log => $output_log, 
    Host => $host
);
$conexion = $telnet -> open(Timeout => 5);
if ($conexion == 1) {
print "Se conecto al $host \n\n";
$input =  $telnet -> get(Timeout => 10);
if ($input) {
    if ($input =~ /login name:/){
        $cmd = $telnet -> print($user);
        ($prematch, $match) = $telnet -> waitfor(
                          Timeout => 5, 
                          Match => '/password:/');
        if ($match) {
            $cmd = $telnet -> print($password);
            ($prematch, $match) = $telnet -> waitfor(
                                 Timeout => 5, 
                                 Match => '/Windows/');
            if ($match) {
                $cmd = $telnet -> print("");
                ($prematch, $match) = $telnet -> waitfor(
                                        Timeout => 5, 
                                        Match => '/choose/'); 
                     # Aca se tiene que diseñar el caso de errores de clave
                    //////ERROR LINE//////
                if ($match eq "choose") {   
                    //////ERROR LINE//////
                    $cmd = $telnet -> print("2");
                    ($prematch, $match) = $telnet -> waitfor(
                                                 Timeout => 5, 
                                                 Match => '/Corp/');
                    if ($match) {
                        print "Se autentico satisfactoriamente el usuario y la contrasena\n\n";
                    }
                } else {
                    print "el usuario o contrasena son erroneos, fallo la conexion\n\n";
                    $cerrar = $telnet -> close;
                    } 
                }
            }
        }
    }   
}
$cerrar = $telnet -> close;
}
4

1 に答える 1