2010-11-23 9 views
9

Estoy escribiendo mis primeros programas en Perl, y escribió esto:¿Por qué dice Perl El símbolo global "SÍMBOLO" requiere un nombre de paquete explícito en la línea X de PROGRAM.pl?

use strict; 
use warnings; 
$animal = "camel"; 
print($animal); 

Cuando corro, me sale estos mensajes desde la línea de comandos de Windows:

Global symbol "animal" requires explicit package name at stringanimal.pl line 3 
Global symbol "animal" requires explicit package name at stringanimal.pl line 4 

Por favor, podría alguien ¿Qué significan estos mensajes?

Respuesta

25

use strict; obliga a declarar sus variables antes de usarlas. Si no lo hace (como en su ejemplo de código), obtendrá ese error.

Declarar la variable, cambie esta línea:

$animal = "camell"; 

Para:

my $animal = "camell"; 

Ver "Declaring variables" para una explicación más en profundidad, y también la sección de Perldoc use strict.

P.S. Camello se escribe "camello" :-)

Editar: Lo que el mensaje de error significa en realidad es que Perl no ha podido encontrar una variable llamada $animal ya que no ha sido declarado, y se supone que debe ser una variable definido en un paquete, pero que olvidaste prefijarlo con el nombre del paquete, por ejemplo $packageName::animal. Obviamente, este no es el caso aquí, simplemente no había declarado $animal.

+0

¿Qué es un paquete? – Peterstone

+0

Un paquete es la forma en que Perl divide el código en varios archivos (para que las piezas individuales de código se puedan "empaquetar" juntas y reutilizar en diferentes proyectos). Esto también ayuda a evitar que tenga un solo script de 300000 líneas, una pesadilla de mantenimiento :-). Ver [este tutorial] (http://perldoc.perl.org/perlmod.html). – Cameron

+0

los paquetes son solo espacios de nombres. Puedes tener una tonelada de ellos en el mismo archivo. – Axeman

0

usted tiene que poner:

my $animal = "camel" 

cuando se utiliza use strict.

Cuestiones relacionadas