@MYarray =( 'Jeff Goldblum Actor', 'Mary Heartman Priest', 'John Ericsson Mathmetician', 'Tony Cisneros Chef' ); @MYarray = map { join " ",@{$_} } sort { $a->[2] cmp $b->[2] } map{[split "\\s",$_]} @MYarray; use Data::Dumper; print Dumper(\@MYarray),"\n\n"; # your output should look like this .. $VAR1 = [ 'Jeff Goldblum Actor', 'Tony Cisneros Chef', 'John Ericsson Mathmetician', 'Mary Heartman Priest' ];