in reply to
Surprising whitespace behavior
If you try perl -MO=Deparse you will see that the perl compiler interprets the print statement as you surmised:
my(@a) = ('a', 'b', 'c', 'def');
my $s = 'foo';
print "s=$s, a=\@ a\n";
- syntax OK
Why there is a difference between the interpretation of $ followed by whitespace and @ followed by whitespace probably lies in the fact that @-interpolation is a quite new invention (5.6 AFAICR).
-MO=Deparse is very handy for finding out why a coinstruct does what it does (and for deobfuscation).