sub sort_by_intf # sort interface alpha/number name mixture properly { my $A = $a; # just turn any number into a 0004 digit one my $B = $b; $A =~ s/([0-9]+)/ sprintf "%04d",9999-$1 /ge; $B =~ s/([0-9]+)/ sprintf "%04d",9999-$1 /ge; $B cmp $A; # reverse order happens to be useful here: } # Tun0, Ser1, Port-channel2, Gi3, Fa4, Eth5