【发布时间】:2013-06-12 17:46:31
【问题描述】:
我试图理解 Perl 上下文,但我被一块石头绊倒了;
给定代码;
#!/usr/bin/perl
my $b = (33,22,11);
print "$b\n";
my $b = () = (33,22,11);
print "$b\n";
my @b = (33,22,11);
print "@b\n";
my @b = () = (33,22,11);
print "@b\n";
结果为(最后一行为空);
11
3
33 22 11
<>
由于第二次打印返回列表的长度,我假设在某个地方生成了一个数组,因为标量上下文中的数组计算为其长度。但第 4 版似乎证明了这一假设。我期待看到'33 22 11' 被打印出来,但什么也没得到。这里发生了什么?
【问题讨论】:
-
这是一个很好的问题 -- +1 -- 但我认为这确实是 List Assignment in Scalar Context 的复制品,它有很好的答案,你应该去看看。
-
我去看看。谢谢!
-
use warnings会给你一些线索。
标签: perl