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