Perl:如何对包含数字字符串的数组的每个索引进行排序

时间:2013-11-20 03:39:41

标签: arrays perl sorting foreach

我有一个数组从文本文件中读取数值。数组的每个索引都包含一个由空格和随机顺序分隔的数字字符串。如何按数字顺序从最低到最高对每个数字索引进行排序?这就是我到目前为止所做的:

print "\n\nNow sorted: \n";
foreach $line(@lines)
{   
chomp($line);
@nums = sort(split (//, $line));
print "$nums"."\n";
}

1 个答案:

答案 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