Una declaración our $x
hace que $x
sea
visible en el ámbito léxico. Por ejemplo el siguiente programa
es considerado sintácticamente incorrecto:
nereida:/home/lhp/projects/perl/src# cat -n our2.pl 1 #!/usr/bin/perl -w 2 use strict; 3 4 sub tutu { 5 $x = 5; 6 print "$x\n"; 7 } 8 9 our $x = 4; 10 tutu(); 11 print "$x\n";Al compilar obtenemos errores que indican que
$x
no ha sido
declarada antes del uso:
nereida:/home/lhp/projects/perl/src# perl -c our2.pl Global symbol "$x" requires explicit package name at our2.pl line 5. Global symbol "$x" requires explicit package name at our2.pl line 6.Para convertirlo en un programa correcto debemos declarar
$x
antes de su uso, por ejemplo en la línea 3.
Vamos, sin embargo, a hacer algo mas extraño:
nereida:/home/lhp/projects/perl/src# cat -n our.pl 1 #!/usr/bin/perl -w 2 use strict; 3 4 sub tutu { 5 our $x = 5; 6 print "$x\n"; 7 } 8 9 our $x = 4; 10 tutu(); 11 print "$x\n";Sólo hay una variable
$x
en el paquete actual. La declaración
de la línea 5 ''hace visible'' $x
en las líneas 5-7, pero
es la misma variable que se declara en la línea 9.
El programa produce la salida:
nereida:/home/lhp/projects/perl/src# our.pl 5 5
Casiano Rodríguez León