#!/usr/bin/perl use strict; use warnings; use Data::Dumper; use DBI; my $user = undef; my $password= undef; my $dbh=DBI->connect("dbi:mysql:test;host=localhost" . ";mysql_read_default_file=$ENV{HOME}/.my.cnf", $user, $password, {RaiseError => 1}) or die "Can't connect: $DBI::errstr\n"; $dbh->do(qq{DROP TABLE IF EXISTS t}) ; $dbh->do(qq{ CREATE TABLE t ( i int not null, c char(10), primary key (i)) }); $dbh->do(qq{ insert into t (i,c) values (1, 'cat'), (2,'dog'), (3,'rabbit'), (4,'horse') }) ; my $query = q|SELECT * FROM t WHERE REPLACE(c,"","") REGEXP ?|; my $sth = $dbh->prepare($query); $sth->execute('t$'); print "one by one\n"; while (my $rec = $sth->fetchrow_arrayref()) { print Dumper($rec); } print "all at once\n"; print Dumper $dbh->selectall_arrayref($query,{ Slice=>{} }, '^d' ); one by one $VAR1 = [ 1, 'cat' ]; $VAR1 = [ 3, 'rabbit' ]; all at once $VAR1 = [ { 'c' => 'dog', 'i' => 2 } ];