Página 1 de 1

Poner un atributo como lista y devolverlo como lista

NotaPublicado: 2014-01-31 15:58 @707
por pablov
Estimados, estoy en Perl y tengo un atributo de la siguiente forma.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     $self->{arrayDatos} = undef;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Donde en una función, le paso una lista para que después me devuelva la lista.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     $self->{arrayDatos}=@filas;
  2.     return $self->{arrayDatos};
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Si lo hago de esa forma no me retorna la lista, me retorna el número de datos...

En cambio, si hago esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     $self->{arrayDatos}=@filas;
  2.     return @filas};
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Si hago el retorno de la fila directamente funciona, pero no es la idea, la lógica es que me ponga el atributo como una lista...

¿En qué estaré fallando? Como soy nuevo en el lenguaje me pierdo bastante, se agradece cualquier ayuda, ¡saludos!

Re: Poner un atributo como lista y devolverlo como lista

NotaPublicado: 2014-01-31 16:24 @725
por morago
referencia el array

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $self->{arrayDatos} = \@filas;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Re: Poner un atributo como lista y devolverlo como lista

NotaPublicado: 2014-01-31 16:29 @728
por explorer
Las variables escalares, los elementos de los arrays y los valores de los hash, solo pueden almacenar valores escalares, así que no puedes guardar un array en un elemento de un hash.

En cambio, lo que se hace es lo mismo que se hace en C: usar punteros. Se guarda el puntero a la estructura que queremos guardar. En Perl, los punteros se llaman referencias.

Para sacar una referencia del array (o de cualquier otra variable), se usa '\', como te ha comentado morago.

Tienes toda la información en tu propio ordenador en perldoc perlref, y en la Web (traducido al español).

Re: Poner un atributo como lista y devolverlo como lista

NotaPublicado: 2014-01-31 16:43 @738
por pablov
Muchas gracias a ambos, nunca he trabajado con punteros ya que estoy acostumbrado a los lenguajes de alto nivel (JAVA, C#, PHP, etc.).

Ahora me ha quedado claro :D.

Re: Poner un atributo como lista y devolverlo como lista

NotaPublicado: 2014-01-31 19:09 @839
por explorer
Perl es un lenguaje de alto nivel. A veces, demasiado alto :)

Lo que sí está claro es que Perl tiene un nivel de expresividad mucho mayor que esos otros lenguajes (dicho en plata: hay que escribir menos código para obtener el resultado).