sub custom_sort { my @a_parts = split /,/, $a; my @b_parts = split /,/, $b; return $a_parts[0] cmp $b_parts[0] || $a_parts[1] cmp $b_parts[1] || $a_parts[2] cmp $b_parts[2]; } # To invoke: my @sorted = sort custom_sort @{ $outputRef };