为什么Tie :: File会在文件排序时添加一行?

时间:2013-04-02 20:51:28

标签: perl tie

我有这个小的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

实际上,排序后的文件包含一个空的第五行。为什么这样,我怎么能阻止它?

2 个答案:

答案 0 :(得分:6)

正如现在删除的answer中所提到的,这似乎是一个已知的错误。

对未解决的列表变量的临时分配是一种解决方法

my @dummy = sort @lines;
@lines = @dummy;

但这对我来说仍然有点像臭虫,你应该report it

更新Already reported(由我们自己的ikegami提供,不少)。 Perlmonks讨论here

答案 1 :(得分:2)

related PerlMonks discussion中所述,@lines = ((), sort @lines);可用于解决错误。