%numeric = (mac_number => 1, generic_code => 1); foreach $record ( sort { if($numeric($sort_by)) { return $a->{$sort_by} <=> $b->{$sort_by} } else { return $a{$sort_by} cmp $b{$sort_by} } } @claim_records ) { print STDOUT $record->{'claim_number'}, "\n"; }