【发布时间】:2014-06-04 20:50:48
【问题描述】:
我正在尝试获取数组数组中“子数组”的数量...
即:
原文:
@array = (("a","b","c"),(1,2,3),("q","w","e"));
修改:
@array = (["a","b","c"],[1,2,3],["q","w","e"]);
我将如何获得这个号码? (在这种情况下,它将是 3。)
【问题讨论】:
-
print scalar(@array)给你什么?我认为答案是 9,因为“子阵列”不存在——它们已被扁平化为一个阵列。您需要使用数组引用来获取子数组,并在子数组周围加上方括号。 -
它输出标量(ARRAY(0x80872ec))
-
如果它显示
ARRAY(0xfoo),您的问题中没有您所说的内容。请显示真实代码,或者如果它来自对答案的评论中所说的哈希(参考),请显示真实的调试输出。 -
检查您的输入;那 (
scalar(ARRAY(0x80872ec))与 Perl 5.18.1 给出的完全不同——它给出了 9。 -
当你不准确地问问题时,人们很难准确地帮助你。您的更改非常重要,但人们已经根据原始代码真诚地回答了。最好显示一个 SSCCE (Short, Self-Contained, Correct Example),以及从作为 SSCCE 发布的代码中获得的确切输出。如果
print scalar(@array)在修改后的代码中没有产生 3,您可能需要向我们展示use Data::Dumper;和print Dumper(\@array);打印的内容。