use strict; use warnings; my $data= [ { 'lastname' => 'Smith', 'city' => 'Chicago', 'state' => 'IL', 'firstname' => 'Jim' }, { 'city' => 'Cleveland', 'state' => 'OH', 'firstname' => 'Susan', 'lastname' => 'Jones' }, { 'state' => 'FL', 'lastname' => 'Waters', 'firstname' => 'Sam', 'city' => 'Miami' } ]; my @order=qw/firstname lastname city state/; my $rowct=0; for my $row (@$data) { printf "%5i \n",$rowct++; for my $ordername (@order) { printf " %20s %-20s \n",$ordername,$row->{$ordername}; } }