@a=map{m[(\d+)([a-z]?)-(\d+|[a-z])]and$2?(map{$1.$_}$2..$3):($1..$3)}split',',$s; print "@a"; 1 2 3 4 5 6a 6b 6c 6d 6e 10 11 12 13 #### print map{ m[ (\d+) ([a-z]?) -? (\d+|[a-z])? ]x and $2 ? ( map{ $1 . $_ } $2 .. $3 ) : $3 ? ( $1 .. $3 ) : ( $1 ) }split ',', $s; 1 2 3 4 5 6a 6b 6c 6d 6e 7 10 11 12 13