Página 1 de 1

Error cuando agrego use

NotaPublicado: 2009-11-06 20:10 @882
por scout
Tengo una subrutina muy bonita que por separado va bien... funciona y me canta al oído... pero en cuanto le pongo al inicio lo siguiente (es lo que tengo que usar en el programa completo), aparece el error que adjunto... ¿A alguno se le ocurre por qué puede ser...?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use strict;
use warnings;
use diagnostics;
use Term::Menu;
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4


Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Unquoted string "informelogico" may clash with future reserved word at
        c:\perl\informesv2.pl line 58 (#1)
    (W reserved) You used a bareword that might someday be claimed as a
    reserved word.  It's best to put such a word in quotes, or capitalize it
    somehow, or insert an underbar into it.  You might also declare it as a
    subroutine.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


El código

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub sqlaltas
{
my $informelogico =0;
$sql = "select bla bla bla";
# creo  nombre logico  y archivo fisico
open (informelogico,">c:/carpeta/informe.sql");
# paso informacion variable sql al archivo
print informelogico $sql;
# Fin de línea y nueva línea para un posible nuevo registro.
 print informelogico "\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Re: error cuando agrego use ....

NotaPublicado: 2009-11-07 05:25 @267
por explorer
A ver... tienes que fijarte un poco más ;)

Con la ayuda de warnings y diagnostics has conseguido que Perl te avise de cualquier cosa rara que ocurra en tu código, y además, que te la explique profusamente.

El mensaje de AVISO (no de error) dice:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Unquoted string "informelogico" may clash with future reserved word at
        c:\perl\informesv2.pl line 58 (#1)
    (W reserved) You used a bareword that might someday be claimed as a
    reserved word.  It's best to put such a word in quotes, or capitalize it
    somehow, or insert an underbar into it.  You might also declare it as a
    subroutine.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


que traducido es:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Cadena "informelogico" no entrecomillada puede concordar con futuras palabras reservadas, en
        c:\perl\informesv2.pl línea 58 (#1)
    (W reservado) Has usado una palabra que puede que algún día sea usada como
    palabra reservada. Es mucho mejor poner una palabra suelta entrecomillada, o en mayúsculas,
    o insertar un guión bajo en ella. También puedes declararla como una
    subrutina.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Así que ya sabes: la solución es, en este caso, pasarla a mayúsculas:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub sqlaltas {
    my $informelogico;
    $sql = "select bla bla bla";

    # creo  nombre lógico  y archivo físico
    open (INFORMELOGICO, ">c:/carpeta/informe.sql");

    # paso información $sql al archivo
    print INFORMELOGICO $sql;

    # Fin de línea y nueva línea para un posible nuevo registro
    print INFORMELOGICO "\n";
 
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


pero, repito: es un aviso. El programa funcionará bien a pesar de todo. Solo tienes que quitar el warnings y el diagnostics y verás que no sale nada en pantalla. De ti depende hacerle caso Perl o no.

Re: error cuando agrego use ....

NotaPublicado: 2009-11-07 16:31 @730
por kidd
Y mejor sería usar:


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     # creo  nombre lógico  y archivo físico
  2.     open my $INFORMELOGICO, ">", "c:/carpeta/informe.sql" or die $!;
  3.  
  4.     # paso información $sql al archivo
  5.     print {$INFORMELOGICO} $sql;
  6.  
  7.     # Fin de línea y nueva línea para un posible nuevo registro
  8.     print {$INFORMELOGICO} "\n";
  9.  
  10.     close $INFORMELOGICO;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Re: Error cuando agrego use

NotaPublicado: 2012-10-01 10:07 @463
por reLlene
¿Existe alguna diferencia "sustancial" entre INFORMELOGICO y $INFORMELOGICO a la hora de definir el nombre del archivo lógico, o da igual? Porque lo he visto de las dos formas y el funcionamiento es el mismo :?

Re: Error cuando agrego use

NotaPublicado: 2012-10-01 11:24 @517
por explorer
Sí hay diferencia...

Si declaras una variable escalar como gestor de archivos, podrás pasarlo sin muchos problemas a través de funciones:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open my $ARCHIVO, '<', 'miarchivo.txt';
  2. procesa($ARCHIVO);
  3. close   $ARCHIVO;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


por lo demás... es casi igual. Pero lo recomendado es usar variables escalares.