【发布时间】:2013-04-28 12:59:56
【问题描述】:
所以,我正在试验多维数组,并意识到我可以以不同的方式访问它们,但完成相同的任务(见下面的代码)。当使用严格/警告时,Perl 告诉我不应该使用 cmets 中由 ** 表示的形式。
use strict;
use warnings;
my @a=();
push @a, [([1,1,1])];
push @a, [([2,2,2],[2,2,2])];
push @a, [([3,3,3],[3,3,3],[3,3,3])];
push @a, [([4],[4,4,4],[4,4,4],[4,4,4],[4,4,4],[4,4,4])];
print scalar(@a)."\n"; #Prints Size of outer array == 4
print scalar(@{@a[3]})."\n"; #Prints number of arrays in slot 3 of @a == 6 **
#or alternatively
print scalar(@{$a[3]})."\n"; #Prints number of arrays in slot 3 of @a == 6
print scalar(@{@{@a[3]}[0]})."\n"; #Prints size of array in @a of (3,0) == 1 **
#or alternatively
print scalar(@{$a[3][0]}); #Prints size of array in @a of (3,0) == 1
上面的两个例子在功能上真的有区别吗?为什么带**的行比其他行差?仅仅是因为他们比他们的同行更令人困惑吗?
提前致谢。
【问题讨论】:
标签: perl