我在 O'Reilly 的书中发现了一个有点奇怪的例子:
@backwards = reverse qw/ yabba dabba doo /;
print "list context: @backwards\n";
$backward = reverse qw/ yabba dabba doo /;
print "scalar1 context: $backward\n";
$notbackward = qw/ yabba dabba doo /;
print "scalar2 context: $notbackward\n";
print "print context: ",reverse qw/ yabba dabba doo /;
print "\n";
输出是:
list context: doo dabba yabba
scalar1 context: oodabbadabbay
scalar2 context: doo
print context: doodabbayabba
我不明白的是scalar1
上下文:
这本书说'reverse something'给出了一个列表上下文,所以我猜qw/ yabba dabba doo /
它被视为一个列表和reverse qw/ yabba dabba doo /
('doo','dabba','yabba')。
所以来了$backward = something
,这意味着某事是一个标量,所以我期待结果'doo dabba yabba',但它是不同的:'oodabbadabbay'。
我想,原因是不能直接将列表设置为标量。所以我做了scalar2
测试:只打印列表中的最新项目。为什么?为什么不在 scalar1 测试中?
标量测试输出如何工作?