Лучшим решением, вероятно, является использование системы ORM, такой как DBIx :: Class . Они значительно облегчают работу с SQL.
Если вы решите остаться на сырой DBI, я бы посоветовал вам использовать готовые заявления, как это:
my $query = sprintf 'INSERT INTO %s VALUES(%s)', dbh->quote_identifier($table), join ',', ('?') x $columns;
my $sth = $dbh->prepare($query);
for my $row (@rows) {
$sth->execute(@{$row});
}
Это будет преимущество в скорости и надежности.
Вы можете заключить все это в подпрограмму, но ORM, вероятно, в любом случае предлагает лучшее решение.