#!/usr/bin/perl use strict; use warnings; use v5.16.0; use lib 'lib'; use DBI; use Carp 'croak'; my $dbh = db_handle('vals.db'); my $sql_table = <<"SQL"; CREATE TABLE IF NOT EXISTS data ( klout INTEGER ); SQL $dbh->do($sql_table); my $sql_insert_statement = "INSERT INTO data (klout) VALUES (?)"; my $sth = $dbh->prepare($sql_insert_statement); my $start = time; foreach (1..1000) { $sth->execute($_); } say "Total time: ", (time - $start); # 180 seconds sub db_handle { my $db_file = shift or croak "db_handle() requires a database name"; no warnings 'once'; return DBI->connect ( "dbi:SQLite:dbname=$db_file", "", #no username "", #no password { RaiseError => 1, PrintError => 0, AutoCommit => 1 }, ) or die $DBH::errstr; }