Tarea: construir hash usando map, donde las claves son los elementos de la matriz dada @a, y los valores son primeros elementos de la lista devueltos por alguna función f ($ element_of_a):Perl: asignación al primer elemento de listas
my @a = (1, 2, 3);
my %h = map {$_ => (f($_))[0]} @a;
Todo el bien hasta que f() devuelve una lista vacía (que es absolutamente correcto para f(), y en ese caso me gustaría asignar UNDEF). El error podría ser reproducida con el siguiente código:
my %h = map {$_ =>()[0]} @a;
el error en sí suena como "número impar de elementos en la asignación de hash". Cuando vuelvo a escribir el código de tal manera que:
my @a = (1, 2, 3);
my $s =()[0];
my %h = map {$_ => $s} @a;
o
my @a = (1, 2, 3);
my %h = map {$_ => undef} @a;
Perl no se queja en absoluto.
Entonces, ¿cómo debo resolver esto - obtener los primeros elementos de la lista devueltos por f(), cuando la lista devuelta está vacía?
versión de Perl es 5.12.3
Gracias.
Wrap la llamada a 'F' de manera que cuando se devuelve una lista vacía, se suministran' undef' o de lo contrario el primer elemento de la lista que regresó. –