#!/usr/bin/perl use strict; use warnings; my @data = ; chomp @data; my @sorted = map { $_->[0] } sort { $a->[1] cmp $b->[1] } map { [ $_, (split /:/)[1] ] } @data; print "data = \n@data\n"; print "sorted = \n@sorted\n"; __DATA__ area1:place1:name1 area1:place4:name2 area3:place3:name3 area5:place2:name2 #### data = area1:place1:name1 area1:place4:name2 area3:place3:name3 area5:place2:name2 sorted = area1:place1:name1 area5:place2:name2 area3:place3:name3 area1:place4:name2