in reply to Re: HOH again.. and tr/// and more..
in thread HOH again.. and tr/// and more..

If the keys really are like your example (one upper case letter followed by one or more numbers), you're in luck - sort will do what you want right out of the box (just try it).

Err, um, not quite:

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; }

Prints:

bobf sort: a1 a10 a100 a11 b10 b2 b200 b25 GF sort: a1 a10 a11 a100 b2 b10 b25 b200

DWIM is Perl's answer to Gödel