• Publicidad

Use of uninitialized value in pattern match (m//) at...

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Use of uninitialized value in pattern match (m//) at...

Notapor xigr » 2006-02-22 03:08 @172

¡Buenos días!

Pues no sé por qué me hace lo siguiente :s para unos switch no hay problema, y para otros leyendo lo mismo sí. Capturo varios datos de al hacer "show version" en este caso capturo el modelo del switch para luego poner unas u otras configuraciones, pero no sé por qué me sale el error.

Las primeras líneas que captura son: (y yo le digo que lea la segunda, y siempre es la segunda)
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Switch>sh version
Cisco Internetwork Operating System Software
IOS (tm) C2950 Software (C2950-C3H2S-M), Version 12.0(5.3)WC(1), MAINTENANCE INTERIM SOFTWARE

Accediendo al Switch 4: 10.96.216.230
Modelo switch --> C2900XL

Accediendo al Switch 5: 10.227.99.113
Use of uninitialized value in split at grgrgrSwitch.pl line 56, <FILE> line 5.
Use of uninitialized value in pattern match (m//) at grgrgrSwitch.pl line 58, <FILE> line 5.
Use of uninitialized value in concatenation (.) or string at grgrgrSwitch.pl line 60, <FILE> line 5.
Modelo switch -->
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


En el script lo tengo puesto así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $session->cmd('show ver');
  2. @salida=$session->waitfor(String => 'Switch#');
  3. $resul=$salida[0];
  4. @lineas = split(/\n/, $resul);
  5. $model=$lineas[2];
  6. ($model2) = $model =~ m/^IOS \(tm\) (.+) Software/;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Es más... Acabo de lanzarlo otra vez, y sin hacer cambios ahora no da error el que antes si lo daba :s
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Accediendo al Switch 5: 10.227.99.113
Modelo switch --> C2900XL
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

¡Gracias!
iñaki
xigr
Perlero nuevo
Perlero nuevo
 
Mensajes: 42
Registrado: 2006-02-03 02:51 @160

Publicidad

Re: Use of uninitialized value in pattern match (m//) at...

Notapor explorer » 2006-02-22 07:02 @334

No sé a qué puede deberse el error...

Puedes hacer varias cosas. Puedes utilizar errmode y errmsg para intentar averiguar si ocurre algún tipo de error en el momento de enviar y recibir.

Si es algo que al final no se puede solucionar (es decir, es completamente aleatorio que los switchs generen una salida correcta o no), puedes incluir tus líneas de petición de información dentro de un bucle.

Algo así como (no probado):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $intentos = 0;
  2. my $resultado;
  3. while ( not defined($resultado) and $intentos < 3 ) {
  4.     $session->cmd('show ver');
  5.     ($resultado, undef) = $session->waitfor(String => 'Switch#');
  6.     $intentos++;
  7. }
  8. die "No pude conectarme!" if $intentos == 4;
  9. my @lineas = split ...
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor kidd » 2006-02-22 09:57 @456

Hola.

Para que no te siga apareciendo el error, cambia la parte que dice:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. ($model2) = $model =~ m/^IOS \(tm\) (.+) Software/;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

a lo siguiente
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $model2 = '';
  2.  
  3. if ( $model =~ m/^IOS \(tm\) (.+) Software/ ) {
  4.     $model2 = $1;
  5. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


SALUDOS
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor xigr » 2006-02-22 10:33 @481

¡Gracias!

¿Podrías ser porque capturara algún espacio en blanco? Es decir, por otros scripts me ha parecido que ese error, o similar, me ha salido al decirle "captura linea 4" y esa línea estuviera vacía :s

De todas formas, usaré las variables para los errores ahora, a ver qué me dice.

Saludos,
iñaki
xigr
Perlero nuevo
Perlero nuevo
 
Mensajes: 42
Registrado: 2006-02-03 02:51 @160

Re: Use of uninitialized value in pattern match (m//) at...

Notapor explorer » 2006-02-22 12:41 @570

Pues sí... podría ser...

Habría que echar un vistazo al código de Net::Telnet, por si acaso...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados