Variables locales en PERL

Las variables locales se pueden declarar en cualquier momento, y de ese modo una sub puede trabajar en ellas sin interferir en las que son usadas por otras sub.

La manera de hacerlo es ésta:

 

local($variable, $anothervar, @even_an_array);

 

Esto crea estas nuevas variables en el momento de la ejecución, salvando los valores precedentes de las variables con el mismo nombres (si existe); a continuación, al final del bloque {} en que se habían incluido, estas variables locales son destruidas, y su valor inicial se restablece. Las variables locales se pueden enicializar también como

 

local($variable, $anothervar)=(value, anothervalue);

 

En concreto, para las sub es muy común empezar definiendo las variables locales para darles a los argumentos nombres que les han pasado:

 

sub addhelp {

A esta sub han pasado 2 argumentos, el nombre de un comando y un texto de ayuda

 

local ($cmd, $txt) = @_;

$cmd =~ tr/A-Z/a-z/;

En este caso A se convierte en a, B en b, etc., de modo que el comando se hace todo con letras minúsculas

 

foreach (split(/\n+/, $txt) {

next unless $_;

skippa las líneas vacías

 

push (@help, $_);

}

}

 

En este punto las variables $cmd e $txt desaparecen, de manera que si la sub addhelp hubiese tenido también una variable llamada $cmd, su valor original se habría restablecido