# Error handling assumed. my $sql = " ... "; my $sth = $dbh->prepare_cached( $sql ); my @stuff; $sth->bind_columns( \(my ($foo), @stuff[0..3]) ); my %data; while ($sth->fetch) { $data{$foo} = [ @stuff ]; } $sth->finish;