【发布时间】:2011-07-07 10:38:00
【问题描述】:
我在 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 测试中?
标量测试输出如何工作?
【问题讨论】: