in reply to DBI bind params & column defaults

Build your query dynamically. Do something like:
sub inserter { my ($tablename, @insert) = @_; my $sql = "INSERT into $tablename SET"; my $rows_affected = 0; foreach my $insert (@insert) { my @columns; while (my ($k, $v) = each %$insert) { push @columns, "$k = $v"; } $rows_affected += $dbh->do( $sql . join(',', @columns), ) || die $DBI::errstr; } return $rows_affected; }

That should do most of what we want.

------
We are the carpenters and bricklayers of the Information Age.

The idea is a little like C++ templates, except not quite so brain-meltingly complicated. -- TheDamian, Exegesis 6

... strings and arrays will suffice. As they are easily available as native data types in any sane language, ... - blokhead, speaking on evolutionary algorithms

Please remember that I'm crufty and crochety. All opinions are purely mine and all code is untested, unless otherwise specified.