in reply to How to sorting

Applying my powers of guesswork - do you want something like this:

use strict; use warnings; my @articleid = sort {&byletterandnumber} qw(b1 b2 b3 a100 a5 a8 a10 a +11); use Data::Dumper; print Dumper(\@articleid); sub byletterandnumber { my($aletter, $anumber, $bletter, $bnumber); if($a =~ /([a-z]+)(\d+)/){ ($aletter, $anumber) = ($1, $2)} if($b =~ /([a-z]+)(\d+)/){ ($bletter, $bnumber) = ($1, $2)} return ($aletter cmp $bletter) || ($anumber <=> $bnumber); }
Edit: this sorts firstly by the letter part, and then by the number part, giving a5, a8, a10, a11, a100, b1, b2, b3 in this case.