use DBI; use DBD::SQLite; # ... sub import_data( $self, $book ) { my $dbh = DBI->connect('dbi:SQLite:dbname=:memory:',undef,undef,{AutoCommit => 1, RaiseError => 1,PrintError => 0}); $dbh->sqlite_create_module(perl => "DBD::SQLite::VirtualTable::PerlData"); my $sql_name = "mytable"; my $colnames = join ", ", qw(PvcCount LCir RCir); local $table_000 = \@data; my $tablevar = __PACKAGE__ . '::table_000'; my $sql = qq(CREATE VIRTUAL TABLE temp."$sql_name" USING perl($colnames, arrayrefs="$tablevar");); $dbh->do($sql); my $sum = $dbh->selectall_arrayref(<<'SQL'); select sum( PvcCount ) , sum(LCir) , sum(RCir) , EquipName from mytable group by EquipName SQL