Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

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

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico
Mensaje Mie Feb 22, 2006 2:08 am
xigr
Perlero Nuevo
Perlero Nuevo
Registrado: 03 Feb 2006
Mensajes: 42
Use of uninitialized value in pattern match (m//) at... Responder citando

buenos días!
pues nosé pq me hace lo siguiente :s para unos switch no hay problema, y para otros leyendo lo mismo si. 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é pq me sale el error.
las primeras líneas que captura son: (y yo le digo que lea la segunda, y siempre es la segunda)

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 -->

En el script lo tengo puesto así:
$session->cmd('show ver');
@salida=$session->waitfor(String => 'Switch#');
$resul=$salida[0];
@lineas = split(/\n/, $resul);
$model=$lineas[2];
($model2) = $model =~ m/^IOS \(tm\) (.+) Software/;


es más... acabo de lanzarlo otra vez, y sin hacer cambios ahora no da error el que antes si lo daba :s
Accediendo al Switch 5: 10.227.99.113
Modelo switch --> C2900XL
gracias!
iñaki
Mensaje Mie Feb 22, 2006 6:02 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4126
Ubicación: Valladolid, España
Responder citando

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):
Código:
my $intentos = 0;
my $resultado;
while ( not defined($resultado) and $intentos < 3 ) {
    $session->cmd('show ver');
    ($resultado, undef) = $session->waitfor(String => 'Switch#');
    $intentos++;
}
die "No pude conectarme!" if $intentos == 4;
my @lineas = split ...
Mensaje Mie Feb 22, 2006 8:57 am
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
Responder citando

Hola:

Para que no te siga apareciendo el error, cambia la parte que dice:

Código:

($model2) = $model =~ m/^IOS \(tm\) (.+) Software/;


a lo siguiente

Código:

my $model2 = '';

    if($model =~ m/^IOS \(tm\) (.+) Software/){
        $model2 = $1;
    }



SALUDOS
Mensaje Mie Feb 22, 2006 9:33 am
xigr
Perlero Nuevo
Perlero Nuevo
Registrado: 03 Feb 2006
Mensajes: 42
Responder citando

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 linea estubiera vacía :s

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

saludos,
iñaki
Mensaje Mie Feb 22, 2006 11:41 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4126
Ubicación: Valladolid, España
Responder citando

Pues sí... podría ser...
Habría que echar un vistazo al código de Net::Telnet, por si acaso...
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group