私は自分のコードを見てきましたが、次のエラーがどこにあるのかわかりません: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;
}