我试图在数组数组中获得“子阵列”的数量……
即:
原版的:
@array = (("a","b","c"),(1,2,3),("q","w","e"));
改性:
@array = (["a","c"],[1,3],["q","e"]);
我怎么去得到这个号码? (在这种情况下,它将是3.)
解决方法
要仅计算数组ref中的数组引用,可以将
grep
与
ref
built-in一起使用.假设在外部数组ref中可以有其他内容和数组引用,可以这样做:
my @array = (["a","e"],4); my $count = scalar grep { ref $_ eq 'ARRAY' } @array; print $count; __END__ 3
它将依次查看@array的每个元素,获取具有引用类型ARRAY的元素,并将结果列表强制转换为标量上下文,给出元素数量.
因为你似乎有一个哈希引用,它包含数组引用的数组引用,所以将它改为this就可以了.我以为你可以自己做转移.
my $count = scalar grep { ref $_ eq 'ARRAY' } @{ $hashref->{element} };