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

実際、ソートされたファイルには空の 5 行目が含まれています。それはなぜですか、どうすればそれを防ぐことができますか?

4

2 に答える 2

6

削除された回答で述べたように、これは既知のバグのようです。

固定されていないリスト変数への一時的な代入は回避策です

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

しかし、これはまだバグのようなにおいがするので、報告する必要があります。

更新:すでに報告されています (私たち自身の池上によっても同様です)。Perlmonks の議論はこちら.

于 2013-04-02T21:00:47.067 に答える
2

関連する PerlMonks ディスカッションで述べたように@lines = ((), sort @lines);、バグを回避するために使用できます。

于 2013-04-02T23:11:36.323 に答える