#!/usr/bin/perl use strict; use warnings; use DBI; use Data::Dumper; my $Sort = 'bydate'; my %DB; my $dbh = DBI->connect('DBI:Pg:dbname=tilrman'); my $sth = $dbh->prepare('SELECT name,height,width,date FROM foo'); $sth->execute(); while (my $row = $sth->fetchrow_arrayref()) { if ($Sort eq 'byname') { $DB{$row->[0]} = [ @{$row}[1, 2, 3] ]; } elsif ($Sort eq 'bydate') { $DB{$row->[3]} = [ @{$row}[1, 2, 0] ]; } } $sth->finish(); $dbh->disconnect(); print Data::Dumper->Dump([\%DB], ['*DB']);