my @SplitEntries = map{[split( '|', $_)]} @Entries; my @Names = map{[$_, @SplitEntries[$_]]} @SplitEntries; my @SortedIndices = map {$_->[0]} sort {$a->[1] cmp $b->[1]} @Names; foreach $lineref (@SplitEntries{@SortedIndices}){ my @Fields = @$Lineref; ... }