我在perl中有一个数组,有一些间隔,如:
@array = qw(1-5 7-9 10-15 20-58 123-192 234-256)
我试图使用排序来订购它,但这是我获得的:
1-5,10-15,123-192,20-58,234-256,7-9
它按第一个数字的第一个字符排序……为了获得下一个数组,如何按整个第一个数字排序?
1-5,7-9,234-256
非常感谢你!
附:
我没有这个代码,我正在尝试这个命令
my @sorted = sort @array;
解决方法
您需要为每个元素提取第一个数字,并使用< =>进行数值比较.操作符,
my @array = qw(1-5 7-9 10-15 20-58 123-192 234-256); my @sorted = sort { my ($aa,$bb) = map /^([0-9]+)/,$a,$b; $aa <=> $bb; } @array;