Problemas con funciones y parametros
Salvador Ortiz Garcia
sog@msg.com.mx
Wed, 11 Feb 1998 18:37:56 -0600 (CST)
On Wed, 11 Feb 1998, Ing. Roberto Andrade wrote:
> Estoy escribiendo un programa utilizando ptk (el módulo de perl
> paramanejar tk, es decir los elementos gráficos de X11) y necesito
> pasarle parámetros a una función.
>
> Ya no recibe el último arreglo!!!
> Que estoy haciendo mal?
>
> Será que mi función ve solo un arreglo al recibir los parámetros?
Efectivamente, del manual de perl (perlsub(1)):
"all functions are passed as parameters _one single_
flat list of scalars" (subrayado mio)
Si quieres pasar a una función varios arreglos lo tienes que hacer por
referencia:
sub A {
my($a, $b, $c) = @_;
# $b y $c son referencias a un arreglos
$x = $c->[0]; # uso un elemento
$y = ${$c}[0]; # o de otra forma
my @C = @$c; # o si quiero todo el arreglo
my @C = @{$_[2]}; # y si lo quisiera sacar directamente de los
# parametros sin temporales.
...
}
A($x, \@Y, \@z);
En perlfaq7(1) hay un apartado de cómo pasar (y recibir) otros tipos
(hashes, filehandlers, etc) a funciones.
Saludos.
Salvador Ortiz.