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
