use strict; use warnings; use Data::Dumper; my @array_keys = (2,1,4,3); my @array_values = ('fred','bob','john','peter'); my @aoa = sort {$a->[0] <=> $b->[0]} map {[$array_keys[$_], $array_values[$_]]} 0..$#array_keys; print Dumper(\@aoa);