$/ = "\n";; print for map{ join '.', unpack 'C*', $_ } sort map{ pack 'C*', split '\.' } qw[1.1 11.2.3 2.3 11.2.1];; 1.1 2.3 11.2.1 11.2.3 #### 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