Now, brethren and sistern, let's all charitabley
agree to stipulate that the
horrid "map in a void context"
was merely for the purpose
of reducing the problem to its bare essentials.
It would appear that, because of what you have
put inside the {...}, Perl is taking that to be an
expression and thus needing a comma after it.
use strict;
my @l = 1..10;
map { 1, 2 }, @l;
map { "$_", 2 }, @l;
does not produce errors. And if you say:
print map { 1, 2 }, @l;
print map { "$_", 2 }, @l;
you will see a bunch of hash-refs. So Perl is seeing
{1,2} as an anonymous hash
rather than as a BLOCK that happens to return
something. (A very reasonable reading
now that we look at it
that way.)
------------------------------------------------------------
"Perl is a mess
and that's good because the
problem space is also a mess." - Larry Wall