Perl - arrays y funciones

 
Vista:

arrays y funciones

Publicado por Mary (2 intervenciones) el 04/07/2006 10:25:50
Hola:
Soy nueva en perl y tengo un pequeño problema. Estoy haciendo una función que devuelve un array cuyos elementos son cadenas, y en el programa principal él valor de la función es asignada a otra variable, y uno de los elementos de esa variable(que será de tipo array) es mostrado por pantalla.

Lo que he hecho es algo así:
Dentro de la función:
sub funcion
($valor)=@_;
....
$fich[0]="cero";
$fich[1]="uno";
return $fich

En el programa principal:

$var=@funcion($valor);
print $var[0];

y no obtengo nada.
Espero que podais ayudarme.

Un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:arrays y funciones

Publicado por Joaquin Ferrero (48 intervenciones) el 04/07/2006 11:26:29
En Perl es importante saber utilizar los 'sigil' en cada momento.

Estos son los fallos que veo en el código que muestras:
* Dentro de la función, asignas uno de los valores de @_ a la variable $valor, que luego no es usada nunca mas...
* A la hora de devolver un valor de retorno, en la función pones el nombre de una función que nunca ha existido: $func
* En el trozo de código del programa principal, intentas llamar a la función como si realmente fuera un array

El problema se puede resolver así:
sub funcion {
my $valor = shift(@_);
# ...
my @fich;
$fich[0] = "cero";
$fich[1] = "uno";
return @fich;
}
my @var = funcion( $val );
print $var[0];

Recomendación:
* Pon siempre al principio del programa estas líneas, para que Perl te ayude cuando algo vaya mal:
use warnings;
use strict;
* Visita el foro http://perlenespanol.baboonsoftware.com/foro/ donde encontrarás mejor ayuda que aquí.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:arrays y funciones

Publicado por Mary (2 intervenciones) el 04/07/2006 13:23:19
Hola:
Muchas gracias por tu ayuda, pero todavía no he conseguido solucionar el problema.
He puesto lo q me has indicado, y me sale el siguiente error:

Use of uninitialized value in print en la linea
print $var[0];

Lo que decías de que asignaba valor de @_ a la variable $valor que nunca utilizo, realmente si que la utilizo. Lo que ocurre, es que para simplificar yo he pegado el código así, pero el valor que toma como parámetro la función si que es utilizado para obtener otros valores.

Muchas gracias de nuevo

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar