7

我有这个应该对文件进行排序的小 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

事实上,排序后的文件包含一个空的第五行。为什么会这样,我该如何防止呢?

4

2 回答 2

6

正如现在已删除的答案中所述,这似乎是一个已知的错误。

临时分配给非绑定列表变量是一种解决方法

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

但这对我来说仍然像一个错误,你应该报告它

更新已经报告(由我们自己的ikegami报告,不少于)。Perlmonks 讨论在这里

于 2013-04-02T21:00:47.067 回答
2

相关 PerlMonks 讨论中所述,@lines = ((), sort @lines);可用于解决该错误。

于 2013-04-02T23:11:36.323 回答