【发布时间】:2019-02-21 07:31:32
【问题描述】:
我目前正在编写一个 Perl 脚本来对标准输入中的行进行排序,并按行长的顺序打印这些行,同时保留相等的行的顺序。 我的排序代码包含以下内容:
while (my $curr_line = <STDIN>) {
chomp($curr_line);
$lines{$curr_line} = length $curr_line;
}
for my $line (sort{ $lines{$a} <=> $lines{$b} } keys %lines){
print $line, "\n";
}
例如,我的标准输入由以下内容组成:
tiny line
medium line
big line
huge line
rand line
megahugegigantic line
我会得到以下输出:
big line
rand line
tiny line
huge line
medium line
megahugegigantic line
有什么方法可以保留等长行的顺序,以使小行先于大行,而大行先于 rand?此外,每次我运行脚本时,顺序似乎都会发生变化。
提前致谢
【问题讨论】: