perl -wle '@r=({k=>"r"},{k=>"s"},{k=>"t"});print $_->{k} for sort { $_->{k} cmp $_->{k} } @r' Use of uninitialized value in string comparison (cmp) at -e line 1. Use of uninitialized value in string comparison (cmp) at -e line 1. Use of uninitialized value in string comparison (cmp) at -e line 1. Use of uninitialized value in string comparison (cmp) at -e line 1. Use of uninitialized value in string comparison (cmp) at -e line 1. Use of uninitialized value in string comparison (cmp) at -e line 1. r s t