【发布时间】:2016-02-25 23:18:09
【问题描述】:
可能会在某处重复,但我查看了每个 perl 数组引用/取消引用示例,我已经能够找到并尝试运行此字符串的 10 多种不同组合以获得我想要的输出。如@$array[i]、@{$array[i]}、@{@$array[i]}等
所以我有一个数组引用数组。我通过创建一个全局数组来构建它,然后将较小的临时数组推送到该全局数组中。运行 Dumper() 时的最终结果如下所示。
$VAR1 = [ 1 ]; $VAR2 = []; $VAR3 = []; $VAR4 = []; $VAR5 = []; $VAR6 = []; $VAR7 = [ 1 ]; $VAR8 = []; $VAR9 = []; $VAR10 = []; $VAR11 = [ 1 ]; $VAR12 = []; $VAR13 = [ 1 ]; $VAR14 = []; $VAR15 = [ 1 ];
现在我试图通过使用来取消引用这些数组之一
my @arrayRef = @{$redArray[$i]};
print "Here: " . @arrayRef[0];
@redArray 是我的全局数组。
我看到的 @{$redArray[$i]} 部分从全局数组中获取引用,然后尊重它,它应该作为数组返回,如 [] 或 [1] 或 [1,1 .... .]
然后在第二行,我想获取数组的第一个元素,它不会返回任何内容/错误或 1。
当打印“这里:”时。 @arrayRef[0];虽然运行,我看到的输出是
Here: Here: Here: Here: Here: Here: Here: Here: Here: Here: Here: Here: Here: Here: Here:
【问题讨论】:
-
仅供参考,如果您将 Data::Dumper 的输出传递给参考,则它的输出会更容易阅读。而不是
print Dumper @foo;做print Dumper \@foo; -
感谢好提示,我会尝试使用它。 [[]、[]、[]、[]、[]、[]、[1]、[]、[]、[]、[1]、[]、[1]、[]、[1]] ;
-
注意在
print "Here: " . @arrayRef[0];中,应该写成$arrayRef[0]。如果您启用了use warnings;,则会指出这一点。更进一步,双引号内插,所以它可以缩短一点:print "Here: $arrayRef[0]";
标签: perl dereference