Siempre hay que acordarse de los buenos amigos, cuando necesitas algo...
Con la ayuda de Data::Dumper, se descubre el interior de ese array:
Using perl Syntax Highlighting
use Data::Dumper;
print Dumper $d;
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Sale algo como
Using text Syntax Highlighting
$VAR1 = [
'1'
];
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Así que el array guarda un número por cada elemento seleccionado. La forma de sacarlo es algo así:
Using perl Syntax Highlighting
for my $id (@$d) {
print "Indice: $id: ";
print $lists->get($id);
print "\n";
}
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Con @$d estamos diciendo que queremos obtener los elementos del array referenciado por $d.
Este comportamiento es el indicado por el manual, en
Tk::Listbox. En el apartado de la función curselection(), aparece:
Devuelve una lista conteniendo los índices numéricos de todos los elementos en el listbox que están actualmente seleccionados. Si no hay elementos seleccionados en el listbox entonces se devuelve una cadena vacía.
Aunque... mi amigo Data::Dumper dice que en este último caso, no es una cadena vacía, sino el valor indefinido (undef).
Así que la forma completa sería:
Using perl Syntax Highlighting
if (!$d) {
print "ninguno seleccionado\n";
}
else {
for my $id (@$d) {
print "Indice: $id: ";
print $lists->get($id);
print "\n";
}
}
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4