danimera escribiste:Hasta donde entiendo las variables locales son usadas dentro del ámbito de una función.
Las variables privadas solamente pueden ser accedidas cuando se trabaja con clases y métodos. "Eso creo".
Pues, es más o menos verdad. ¡Pero! la cosa es un poco más difícil en Perl. De primero, no hay variables privadas en este sentido en Perl. Hay algunos módulos para ayudar a producir clases que tienen algo así pero no Perl mismo. Las variables locales en un sentido similar a lo de tu primera frase se declaran con my(). La diferencia es que esos variables no existen dentro de alguna función pero dentro de un bloque (no sé cómo se dice en español). Una variable así se puede usar desde la declaración hasta el
} que cierra el bloque que contiene la declaración. O hasta el fin del fichero:
Using perl Syntax Highlighting
sub foo
{
my $x = 5; # declaracion
if (1
< 2
) {
my $y = 8;
print $x+$y, "\n";
}
print $x+$y, "\n"; # ¡¡¡FALTA!!! $y ya no existe !
}Coloreado en 0.004 segundos, usando
GeSHi 1.0.8.4
Además, Perl tiene local(). Es algo un poco raro y no es fácil describirlo. ¡
local($x) no es una declaración! Un local significa: recuerda el valor de esa variable, limpia la variable y cuando salimos del este bloque reajusta la variable al valor que has recordado. Lo que hace la situación más complicada es que no se puede local()izar las variables declaradas con my(), solo las variables global.
No te preocupes por eso y siempre usa my().
Normalmente local() se debe usar solo cuando necesitas por un rato cambiar el valor de alguna variable especial, algo como $/ o $;.