sub phone_value { my ($v) = @_; $v =~ tr/^0-9//d; return $v; } my @output = sort { $a->[0] cmp $b->[0] || phone_value($a->[3]) <=> phone_value($b->[3]) } map { chomp; [ split(',', $_, 4) ] } ;