• Publicidad

WARNINGS

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

WARNINGS

Notapor danielamonmor » 2008-09-30 12:30 @562

Buen día a todos.

Estoy haciendo un script en Perl que consiste en un reporte en Excel. El script funciona perfectamente pero el problema radica en que al revisar los log hay muchos warnings y ya le intenté de varias maneras para poder quitarlos; hasta el momento no he podido. Aquí pongo el código donde me marca los warnings.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
   foreach my $x (@programas) {
     &barra_programas($x,$ban) ;
     $num_elementos=$#columnas_programa + 1;
     foreach my $num_control (@control) {
       foreach (@columnas_programa) {
         $for1->write($r, $col, "$cantidad{$x.$num_control.$_}",$price_format); $col++; #linea 379
         $sub_total_prog+=$cantidad{$x.$num_control.$_}; #linea 380
         $total_columna{$_}+=$cantidad{$x.$num_control.$_}; #linea 381
         $total_registro{$num_control}+=$cantidad{$x.$num_control.$_}; #linea 382
       }

       if ($x < 5000) {
         $for1->write($r, $col, "$sub_total_prog",$price_format2);
       }
       $total_prog+=$sub_total_prog;
       $sub_total_prog=0;
       $r++; $col-=$num_elementos;
     }
     $r++;
     if ($x < 5000) {
       foreach (@columnas_programa) {
         $for1->write($r, $col, "$total_columna{$_}",$price_format2); $col++;
         $total_columna{$_}=0;
       }
     }
     $for1->write($r, $col, "$total_prog",$price_format2); $col++;
     $gran_total+=$total_prog;

     $r=2; @columnas_programa=0; $ban++; $total_prog=0;
   }
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Los warnings que me marca cada vez que entra al ciclo foreach(@programas) son los siguientes:

Código: Seleccionar todo
[Tue Sep 30 11:34:20 2008] [error] [client 192.168.10.193] [Tue Sep 30 11:34:20 2008] rep_radicaciones.cgi: Use of uninitialized value in string at /var/www/cgi-bin/firco/rep_radicaciones.cgi line 379., referer: https://192.168.10.2/cgi-bin/radicaciones/acceso.cgi
[Tue Sep 30 11:34:20 2008] [error] [client 192.168.10.193] [Tue Sep 30 11:34:20 2008] rep_radicaciones.cgi: Use of uninitialized value in addition (+) at /var/www/cgi-bin/firco/rep_radicaciones.cgi line 380., referer: https://192.168.10.2/cgi-bin/radicaciones/acceso.cgi
[Tue Sep 30 11:34:20 2008] [error] [client 192.168.10.193] [Tue Sep 30 11:34:20 2008] rep_radicaciones.cgi: Use of uninitialized value in addition (+) at /var/www/cgi-bin/firco/rep_radicaciones.cgi line 381., referer: https://192.168.10.2/cgi-bin/radicaciones/acceso.cgi
[Tue Sep 30 11:34:20 2008] [error] [client 192.168.10.193] [Tue Sep 30 11:34:20 2008] rep_radicaciones.cgi: Use of uninitialized value in addition (+) at /var/www/cgi-bin/firco/rep_radicaciones.cgi line 382., referer: https://192.168.10.2/cgi-bin/radicaciones/acceso.cgi

Gracias.
danielamonmor
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2008-09-30 12:06 @546

Publicidad

Notapor explorer » 2008-09-30 13:37 @609

Bienvenido a los foros de Perl en Español, danielamonmor.

Los errores dicen que el elemento $cantidad{$x.$num_control.$_} no existe o no está definido.

Si el número de elementos no es excesivo, podrías ver la estructura de %cantidad con Data::Dumper, para ver qué clave es la que no existe.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

WARNINGS

Notapor danielamonmor » 2008-09-30 16:13 @717

Gracias por la bienvenida, explorer. Efectivamente, tienes razón, hay varios elementos de $cantidad{$x.$num_control.$_} que no contienen nada. Voy a intentar hacer lo que me aconsejas, en caso de no poder espero que me puedas ayudar.
danielamonmor
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2008-09-30 12:06 @546

Notapor explorer » 2008-09-30 17:23 @766

Puedes hacer antes una pregunta para saber si existe o no.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
foreach (@columnas_programa) {
    my $clave = "$x$num_control$_";

    if ( defined $cantidad{$clave} ) {
        $for1->write($r, $col, $cantidad{$clave}, $price_format); $col++; #linea 379

        $sub_total_prog += $cantidad{$clave}; #linea 380

        $total_columna{$_} += $cantidad{$clave}; #linea 381
        $total_registro{$num_control} += $cantidad{$clave}; #linea 382
    }
}
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: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor danielamonmor » 2008-09-30 20:48 @908

Gracias, explorer, pregunté si el valor estaba definido y ya me mandó mucho menos warnings. Te lo agradezco.
danielamonmor
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2008-09-30 12:06 @546

Notapor Jenda » 2008-10-01 06:07 @296

Escribir
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
 "$variable"
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

es casi nunca necesario, normalmente inútil y es retardante y puede causar warnings) y a veces rompe el script. Si no necesitas constituir una nueva cadena de caracteres que contiene algún(as) variable(s), no debes usar las comillas. Con
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$variable
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

basta.

Jenda
-------------------------------------------------------
- Estoy aquí para practicar español. Si te ayudó mi respuesta ayudame con un mensaje privado sobre mis faltas por favor. Seguramente habrá muchas :-)
Jenda
Perlero nuevo
Perlero nuevo
 
Mensajes: 132
Registrado: 2007-10-29 06:31 @313
Ubicación: Praga, Republica Checa


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron