按升序对输入文本文件和输出文件进行排序(perl)

时间:2014-04-03 06:27:46

标签: perl sorting hash

我是使用perl编程的新手,我遇到了如何在我的任务中解决这个问题的问题。它非常简单 - 子程序读入输入文本文件,其中每一行包含姓氏,名字和分数(按此顺序),由一个空格分隔:

Williams John 999
Desplat Alexandre 123
Zimmer Hans 234
Newman Thomas 637

等。 输出看起来就像输入文件一样,只是根据姓氏按顺序排列。

我在想我应该使用关联数组/哈希?我不能在perl的内置'sort'函数中使用。如果有人可以解释/描述我如何在这里实现哈希,那就太棒了。

1 个答案:

答案 0 :(得分:2)

试试这个(@Zaid建议的修订版,谢谢):

perl -e 'print sort <>' data_file

如果你不能使用Perl builtin sort,那么你需要实现自己的排序例程。例如:

sub mySort {
        return @_ if @_ <= 1;

        my $pivot = shift;

        return (mySort (grep { $_ le $pivot } @_),
                $pivot,
                mySort (grep { $_ gt $pivot } @_));
}