[Perl] Pasando un hash (entregad
o por un método) a keys
Gunnar Wolf
gwolf@gwolf.cx
Fri, 22 Aug 2003 10:37:01 -0500
Hola,
Esta me tiene completamente en blanco, espero que alguno de ustedes
pueda echarme una mano: Tengo una función que regresa un hash:
return map { $_=>$authors->{$_}->{'mention_order'} } keys %$authors;
Ahora, en determinado punto quiero usar únicamente las llaves,
descartando los valores. Me funciona así:
my %tmp = get_authors;
my @authors = keys %tmp;
Pero, obviamente, se ve horrible, y no me gusta estar creando variables
innecesarias. Ahora, si hago:
my @authors = keys(get_authors());
Perl me dice que:
Type of arg 1 to keys must be hash (not subroutine entry)
De hecho, hice un one-liner para demostrar la generalidad de esta bronca:
$ perl -e 'sub dameHash {my %h=(1=>2,3=>4); return %h}; print keameHash'
Type of arg 1 to keys must be hash (not subroutine entry) at -e line 1, at EOF
Execution of -e aborted due to compilation errors.
O sea que... ¡Ni siquiera llega a evaluarlo! :-( keys necesita, a tiempo
de compilación, ir junto a un hash real - ¿Por qué?
¿Hay alguna manera de sacarle la vuelta a esto, que suena tan poco Pérlico?
Saludos,
--
Gunnar Wolf - gwolf@gwolf.cx - (+52-55)5630-9700 ext. 1366
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973 F800 D80E F35A 8BB5 27AF