Contexto escalar vs lista em Perl
Eu achei um exemplo em um livro da O'Reilly um pouco estranho:
@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";
A saída é:
list context: doo dabba yabba
scalar1 context: oodabbadabbay
scalar2 context: doo
print context: doodabbayabba
O que eu não entendo é oscalar1
contexto:
O livro diz 'algo inverso' fornece um contexto de lista, então eu achoqw/ yabba dabba doo /
é visto como uma lista ereverse qw/ yabba dabba doo /
as ('doo', 'dabba', 'yabba').
Então vem o$backward = something
o que implica que algo é escalar, então eu esperava o resultado 'doo dabba yabba', mas é diferente: 'oodabbadabbay'.
Eu pensei que o motivo era porque não se pode definir uma lista diretamente para um escalar. Então eu fiz oscalar2
teste: somente o item mais recente da lista é impresso. Por quê? Por que não no teste scalar1?
Como funcionam os resultados dos testes escalares?