#!/usr/bin/perl use strict; use Data::Dumper; my @advocates = ( { fld_title => 'Rec1', fld_type => 'National', }, { fld_title => 'Rec2', fld_type => 'State', }, { fld_title => 'Rec3', fld_type => 'Local', }, ); my %map = ( local => 1, state => 2, national => 3 ); my @sorted_advocates = map {$_->[1]} sort {$a->[0] <=> $b->[0]} map {[$map{lc($_->{fld_type})},$_]} @advocates; warn Dumper("unsorted_advocates", \@advocates); warn Dumper("sorted_advocates", \@sorted_advocates);