我有一个数组从文本文件中读取数值。数组的每个索引都包含一个由空格和随机顺序分隔的数字字符串。如何按数字顺序从最低到最高对每个数字索引进行排序?这就是我到目前为止所做的:
print "\n\nNow sorted: \n";
foreach $line(@lines)
{
chomp($line);
@nums = sort(split (//, $line));
print "$nums"."\n";
}
答案 0 :(得分:1)
也许以下内容会有所帮助:
use strict;
use warnings;
my @lines = <DATA>;
foreach my $line (@lines) {
my @nums = sort { $a <=> $b } split ' ', $line;
print "@nums\n";
}
__DATA__
7 2 9 6 4 10
3 6 8 8 10 1
9 4 10 9 2 5
5 0 2 3 7 8
输出:
2 4 6 7 9 10
1 3 6 8 8 10
2 4 5 9 9 10
0 2 3 5 7 8
请注意,上面的内容稍微修改了一下。请务必始终use strict; use warnings;
注意{ $a <=> $b }
之后的匿名子sort
。这需要sort
数字化。没有它,就会进行字符串比较,第一个print
ed行将是10 2 4 6 7 9
。您似乎也尝试split
进行零宽度匹配,即split //, $line
。这个split
的结果是一个包含该行的单个字符列表 - 不是您想要的,因为您需要split
空格。最后,您填充了@nums
,然后填充print
ed $nums
。