我有一堆存储在数组中的IP地址,例如:
my @ip = qw(10.11.1.1 10.100.1.1 ...);
如何按升序对地址进行排序?我尝试过一种简单的方法但当然失败了.
解决方法
IPv4地址只是32位数字.
use Socket qw( inet_aton ); my @sorted = map substr($_,4),sort map inet_aton($_) . $_,@ips;
要么
my @sorted = map substr($_,sort map pack('C4a*',split(/\./),$_),@ips;
第一个也接受域名.