名單方面,我發現在O'Reilly出版的一個例子有點怪異:標VS在Perl
@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
上下文:
這本書說'反向的東西'給出了一個列表上下文,所以我猜qw/ yabba dabba doo /
被看作是一個列表和reverse qw/ yabba dabba doo /
('doo','dabba','yabba')。
因此,$backward = something
這意味着什麼是標量,所以我期待的結果'doo dabba yabba',但它是différent:'oodabbadabbay'。
我想,原因是因爲無法直接設置一個列表到標量。所以我做了scalar2
測試:只打印列表中的最新項目。爲什麼?爲什麼不在scalar1測試中?
標量測試輸出如何工作?