use strict; use warnings; my @array = qw(a1 a10 a100 a11 b2 b10 b200 b25); print 'bobf sort: ', join ' ', sort @array; print "\n GF sort: ", join ' ', sort alfNum @array; sub alfNum { my ($aAlf, $aNum) = $a =~ /([a-z]+)(\d+)/i; my ($bAlf, $bNum) = $b =~ /([a-z]+)(\d+)/i; return $aAlf cmp $bAlf if $aAlf ne $bAlf; return $aNum <=> $bNum; } #### bobf sort: a1 a10 a100 a11 b10 b2 b200 b25 GF sort: a1 a10 a11 a100 b2 b10 b25 b200