Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl:从文件输入到排序文件输出_Perl_Sorting - Fatal编程技术网

Perl:从文件输入到排序文件输出

Perl:从文件输入到排序文件输出,perl,sorting,Perl,Sorting,我需要有关perl代码的帮助。我需要能够阅读一个文件,每行一个字,至少50行。我有一个代码来打印文件中的每一行,但如何将这些项目排序,然后输出到新文件中 while(<>){ chomp; print "$_ :is in the file"; } while(){ 咀嚼; 打印“$\:在文件中”; } 我正在努力弄清楚如何接收一个文件,然后(我想他们会逐行解析文件)将其输出到另一个文件。perl-we'print sort'input.txt>output.txt perl -

我需要有关perl代码的帮助。我需要能够阅读一个文件,每行一个字,至少50行。我有一个代码来打印文件中的每一行,但如何将这些项目排序,然后输出到新文件中

while(<>){
chomp;
print "$_ :is in the file";
}
while(){
咀嚼;
打印“$\:在文件中”;
}
我正在努力弄清楚如何接收一个文件,然后(我想他们会逐行解析文件)将其输出到另一个文件。

perl-we'print sort'input.txt>output.txt
perl -we 'print sort <>' input.txt > output.txt
细分:

  • 当我们使用菱形运算符时,将打开文件
    input.txt
    进行读取
  • 列表上下文中的
    将文件中的所有行返回到
    排序
  • sort
    按字母顺序对行进行排序,并将列表返回到
    print
  • print
    打印已排序的列表
  • shell将
    perl
    命令的输出重定向到文件
    output.txt

对于功能性更强的方法,作为一个线性系统:

perl -e '$, = "\n"; print sort map { chomp; $_ } <>' input.txt > output.txt

@array=
获取所有行。它们、输出文件和离开。我们也在谈论:打开(新的_文件);foreach$line(@array){print“$line”}close(new_文件)不确定open是否正确,如果您想阅读,这些是指向文档的链接。打印数组时不必循环——print将列表作为参数:
print@array
。因此,如果我从命令行传入一个文件,我将如何处理input.txt>output.txt(>output.txt),与我的答案完全相同。当然,您只需要输入自己的文件名。如果文件不以换行符结尾,这将产生不正确的输出。@JonPurdy现在我明白您为什么选择换行了=PWhy first
chomp
然后添加换行?@TLP:文件中的最后一行可能没有换行符,在这种情况下,如果我们不删除并重新添加换行符,它将与下一个更高的值打印在同一行。@TLP:对不起,但我确实单独编写了答案。只有这么多的方法可以完成这么小的任务,所以必然会有很多重叠。就堆栈交换的游戏元素而言,从其他答案中分配和改进信息是一个很好的策略,我只是碰巧没有在这里使用它P@Pavel:这很奇怪,除非您使用
binmode
,否则它应该与CRLF行结尾一起使用(因为文件句柄应该使用
:CRLF
自动打开)。这种情况下的一个解决方法是设置
local$/=“\r\n”
。单引号在windows上不起作用,因为单引号在windows上的处理方式不同。
#!/usr/bin/env perl -w

$, = "\n";

open(my $output, ">", "output.txt")
  or die "Cannot open output.txt: $!\n";

print $output sort map { chomp; $_ } <>;

close $output;