• Publicidad

Useless use of private variable in void context at programa?

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

Useless use of private variable in void context at programa?

Notapor Lumyjj » 2010-01-05 09:19 @430

Hola,

Al ejecutar un programa me da este error y no sé exactamente por qué es. En la línea que indica sólo hay un "}" y no encuentro alrededor ningún error.

¿Con qué tipo de errores sale este mensaje?
Lumyjj
Perlero nuevo
Perlero nuevo
 
Mensajes: 13
Registrado: 2009-12-27 07:05 @336

Publicidad

Re: Useless use of private variable in void context at programa?

Notapor danimera » 2010-01-05 12:21 @556

Deberías poner el código.

Creo además que estás usando warnings.
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Re: Useless use of private variable in void context at programa?

Notapor creating021 » 2010-01-05 13:30 @604

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use diagnostics;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Ese módulo te mostrará secciones de perldoc con la explicación de los posibles errores.

Aquel error normalmente indica que hay un string, array o hash que, en contexto escalar, no tiene valor alguno.
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Re: Useless use of private variable in void context at programa?

Notapor explorer » 2010-01-05 16:02 @710

diagnostics saca el mensaje que está escrito en perldiag:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
       Inútil uso de %s en contexto vacío
           (A vacío) Ha hecho algo, sin efectos colaterales, en un contexto que no hace nada con el valor de retorno, como una sentencia que no devuelve un valor de retorno desde un bloque, o el lado izquierdo de un operador escalar coma. Muy a menudo esto no apunta a que sea una estupidez por parte suya, sino a un fallo de Perl al interpretar su programa de la manera que usted pensaba que lo haría. Por ejemplo, usted obtiene esto si mezcla la precedencia de C con la precedencia de Pyhton, y escribe:

               $uno, $dos = 1, 2;

           cuando lo que realmente quería decir

               ($uno, $dos) = (1, 2);

           Otro error muy común usar paréntesis normales para construir una referencia a una lista cuando debería usar corchetes o llaves; por ejemplo, si dice

               $array = (1,2);

           cuando realmente quería haber dicho

               $array = [1,2];

           Los corchetes, explícitamente, convierten un valor de lista en un valor escalar, mientras que los paréntesis, no. De esta forma, cuando una lista, entre paréntesis, es evaluada en contexto escalar, la coma se trata como el operador coma del C, que descarta el argumento de la izquierda, que no era lo que usted quería. Ver perlref para más información sobre esto.

           Este aviso no aparecerá en constantes numéricas iguales a 0 o 1, porque a menudo se usan en sentencias como

               1 while sub_con_efectos_laterales();

           Cadenas de caracteres constantes que, de forma normal, se evaluarían a 0 o 1, sí que activarán el aviso.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Es muy posible que la línea de error sea en un sitio distinto a donde se te está indicando. Sin ver el código, es difícil decir dónde.

Prueba con el sistema de depuración binaria de print(), para saber dónde está el fallo.
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

Re: Useless use of private variable in void context at programa?

Notapor danimera » 2010-01-05 18:18 @804

Si utilizas un for puede ser que tienes algo así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
for ($a; a>7; $a++){

}

#lo ideal sería

for ($a = 0; a>7; $a++){

}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Re: Useless use of private variable in void context at programa?

Notapor explorer » 2010-01-05 18:33 @814

Al bucle de danimera le faltan algunos '$' ;)

Este otro ejemplo también reproduce el aviso:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use diagnostics;
  5.  
  6. my $j = 3;
  7.  
  8. while ($j--) {
  9.     my $k = 3*$j;
  10.     my $i;
  11.     print "$k\n";
  12.  
  13.     $i;
  14. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Useless use of private variable in void context at ./kk.pl line 13 (#1)
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
debido a que estamos usando $i, pero para nada.
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


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 27 invitados

cron