如何根据行长度对文件进行排序,包括空格Perl

时间:2018-03-21 23:21:14

标签: perl file sorting

我试图根据行长度对文件进行排序:

我的名字是蒂姆 我喜欢菠萝很多 嗨

这样的事情


我叫蒂姆 我喜欢菠萝很多

我必须在那里包含空格,所以我尝试做的是将每一行放入一个数组中,一行=数组中的1个字符串。然后我尝试对数组进行排序,但这并没有太好用。

1 个答案:

答案 0 :(得分:0)

这(来自现有的“重复”答案之一):

perl -ne 'push @a, $_; END{ print sort { length $a <=> length $b } @a }' file

而且:

#!/usr/bin/env perl

use warnings;
use strict;
my @arr;

sub compareLength
{
        length $::a <=> length $::b;
}

while (<>)
{
        push @arr, "$_";
}
print (sort {compareLength} @arr);

基本上完全相同。 -n在其后面创建while(<>)END个帖子,比较函数是匿名的(vs命名)和内联。 (但它仍然存在,仍然是一个子程序)。

哦,我将@a重命名为@arr,因为我不喜欢两个名为a@a$a)的变量<} / p>

我希望这会有所帮助。