jimr1984 escribiste:my $var = keys(%$dispositivos);
La función keys no devuelve un escalar, sino una lista de valores, que son las claves del
hash %$dispositivos.
Y las listas de valores las solemos guardar en
array:
my @var = keys(%$dispositivos);y ahora ya puedes extraer los valores almacenados en @var: $var[0], $var[1], etc.
jimr1984 escribiste:+ get_remote_devices() <-- esto devuelve una lista de dispositivos. ¿NO debería guardarse en un @array?
+ ¿por qué lo almacenamos en una cadena normal $service_ref?
Lo dice el manual:
get_remote_devices()
Searches for remote Bluetooth devices. The search will take approximately 5 - 10 seconds (This will be a configurable value in the future.). When finished, it will return a hash reference that contains the device address and name. The address is the key and the name is the value. Name will be set to "[unknown]" if the name could not be resolved. See the NOTES section of this document for more information about this.
Traducido: que get_remote_devices() devuelve una referencia a un
hash. Y esa es la razón por la cual se almacena en una variable escalar. Y esa es la razón por la cual luego se desreferencia poniendo '%' delante del escalar, y así obtenemos el
hash original.
Tienes más información sobre las referencias en
perldoc perlref.