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.