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
文脈です:
この本は、「何かを逆にする」はリストのコンテキストを与えると言っているので、私はリストとして、そして(「doo」、「dabba」、「yabba」)としてqw/ yabba dabba doo /
見られていると思います。reverse qw/ yabba dabba doo /
これは、$backward = something
何かがスカラーであることを意味するので、「doo dabba yabba」という結果を期待していましたが、「oodabbadabbay」とは異なります。
リストを直接スカラーに設定できないからだと思いました。そこで、scalar2
テストを行いました。リスト内の最新のアイテムのみが印刷されます。なんで?なぜscalar1テストに参加しないのですか?
スカラーテストの出力はどのように機能しますか?