http://www.perlmonks.org?node_id=1053982


in reply to Join and Concatenation

I don't think this is a join bug. I think it is a matter of operator precedence (see perlop). I think the concatenation operator is enforcing scalar context on the array (hence the 3).

Tip #6 from the Basic debugging checklist (B::Deparse). Look how perl internally places parens:

print "\nConcatenation and join (without parens)- NOT OK\n"; $cols = '[' . join('],[', @array . ']');

If your goal is to enclose all elements of an array with square brackets, then join them with commas, I think a more natural approach uses map:

$cols = join ',', map { "[$_]" } @array;