【发布时间】:2016-03-16 06:22:42
【问题描述】:
我已经 10 多年没有使用 Perl 编程了,所以这对于更有经验的 Perl 程序员来说可能是显而易见的。我搜索了答案,但没有找到任何东西。
我的问题是:为什么对匿名数组的引用是标量的?
例如在下面的代码中:
#!/usr/bin/perl
use strict;
use feature qw(say);
my @array1 = ('one');
say 'array ref 1: ' . \@array1;
my @array2 = ('one', 'two');
say 'array ref 2: ' . \@array2;
say 'array ref 3: ' . \('one');
say 'array ref 4: ' . \('one', 'two');
exit 0;
结果是:
array ref 1: ARRAY(0x1e1b1c0)
array ref 2: ARRAY(0x1e1b190)
array ref 3: SCALAR(0x1e1b280)
array ref 4: SCALAR(0x1e10c40)
为什么数组 ref 3 和数组 ref 4 是标量?
【问题讨论】:
-
也试试
say 'array ref 5: ' . ['one', 'two']; -
您的示例中没有匿名数组 :-)
-
这在Arrays vs. Lists in Perl: What's the Difference?“可以引用数组”下进行了解释。 (我也建议阅读本文的其余部分,因为许多 Perl 程序员没有意识到列表和数组之间的区别。)
-
谢谢ThisSuitIsBlackNot 我读过那篇关于数组与列表的文章,它清除了一切。
标签: arrays perl reference scalar