print for map{ join'.',unpack'U*',$_ } sort map{ pack'U*',split '\.', "1.2.$_.4" } reverse qw[ 1 11 111 127 127 128 129 254 255 256 257 1111 11111 64000 ];; 1.2.1.4 1.2.11.4 1.2.111.4 1.2.127.4 1.2.127.4 1.2.128.4 1.2.129.4 1.2.254.4 1.2.255.4 1.2.256.4 1.2.257.4 1.2.1111.4 1.2.11111.4 1.2.64000.4