I've also found it important to thump the desk when I'm teaching about this topic, over two very specific things:
- A list never gets produced in a scalar context.
- What a construct does produce in a scalar context must be learned,
not derived by any general rule.
So, if you learn about what
@foo does in a scalar context,
that tells you
nothing about what
@foo[3..5] does
in a scalar context, or even what
($x,$y,$z) does in a scalar
context. You must learn them each individually.
As it turns out, there is a bit of consistency in it (it's not just random madness),
but that's available only after the fact. {grin}
-- Randal L. Schwartz, Perl hacker