Tengo el siguiente:Obtener la longitud de una matriz dentro de un hash de Perl
$data{host} -> [$i] -> {someotherstuff}
¿Cómo puedo obtener la longitud de la matriz donde [$ i] es?
Tengo el siguiente:Obtener la longitud de una matriz dentro de un hash de Perl
$data{host} -> [$i] -> {someotherstuff}
¿Cómo puedo obtener la longitud de la matriz donde [$ i] es?
$length = scalar(@{ $data{host} });
respuesta añadió a causa de msw's comment:
use autobox::Core;
# ...
$data{host}->length;
Esto funciona de la misma como la respuesta de Cfreak, excepto con mucho menos enrevesada sintaxis, a costa de la utilización de un módulo.
Tengo la tesis de que la mayoría de las quejas legítimas sobre Perl se pueden responder simplemente con »No es necesario que sea así!« y satisfecho con una breve sinopsis de CPAN.
Si desea que el último índice, puede utilizar: $ # @ $ {datos}} {anfitrión
Obviamente, la longitud de la matriz es el índice de la última + 1. Utilice esta notación cuando es más difícil de lograr un contexto escalar, o cuando específicamente desea longitud-1. Por ejemplo:
0 .. $ # $ {datos {host}} # devuelve una lista de todos los índices de la matriz
En algún útil.
y dicen que la sintaxis de Perl es intrincada (dice el tipo que ha estado usando Perl desde v2.x) – msw
Siempre le digo a la gente que Perl está por delante de su tiempo :-) – Cfreak
No es necesario 'escalar'. '$ length = @ {$ data {host}}' hubiera funcionado igual de bien. – Zaid