in reply to Can't I chop the lvalue of join?

This is very close to broquaint's, but a bit more orthogonal:
print 'INSERT INTO table(' . join(',', @fields) . ') VALUES (' . join(',', ('?') x @fields) . ')';
However that's too many parens and single quotes to grok for my taste. Here's what I'd do:
{ local $" = ','; print "INSERT INTO table(@fields) VALUES (@{[ map '?', @fields]})" +; }
Update: or of course, even better
{ local $" = ','; print "INSERT INTO table(@fields) VALUES (@{[('?') x @fields]})"; }
Update 2002 09 30: it has to be $" of course, not $, -- doh.

Makeshifts last the longest.