我有这个小的perl脚本应该对文件进行排序:
#!/usr/bin/perl
use strict;
use warnings;
use Tie::File;
tie my @lines, 'Tie::File', 'fileToBeSorted.txt' or die $!;
printf "line count before: %d\n", scalar @lines;
@lines= sort @lines;
printf "line count after: %d\n", scalar @lines;
untie @lines;
使用此输入(fileToBeSorted.txt
)
one;4;1
two;3;2
three;2;3
four;1;4
脚本输出
line count before: 4
line count after: 5
实际上,排序后的文件包含一个空的第五行。为什么这样,我怎么能阻止它?
答案 0 :(得分:6)
正如现在删除的answer中所提到的,这似乎是一个已知的错误。
对未解决的列表变量的临时分配是一种解决方法
my @dummy = sort @lines;
@lines = @dummy;
但这对我来说仍然有点像臭虫,你应该report it。
更新:Already reported(由我们自己的ikegami提供,不少)。 Perlmonks讨论here。
答案 1 :(得分:2)
如related PerlMonks discussion中所述,@lines = ((), sort @lines);
可用于解决错误。