But isn't this always the case when you're dealing with statements that take lists as arguments?
# Ooops!
print join ",", @foo, "\n";
# Ooops!
print grep /o/, @foo, "Hello world!\n";
# Ooops!
print table{
map {
tr(td($_->[0]), td($_->[1])) } @foo,
...
My rule of thumb is, if one of these statements is followed by anything besides its argument, then parenthesize that statement's entire argument list.
# De-oopsed.
print join(",", @foo), "\n";
print grep(/o/, @foo), "Hello world!\n";
print table{
map({
tr(td($_->[0]), td($_->[1])) } @foo),
...
--
I hate storms, but calms undermine my spirits.
-- Bernard Moitessier, "The Long Way"