2013-04-02 4 views
7

私は、ファイルを並べ替えることになっているこの小さなperlスクリプトがあります。この入力(fileToBeSorted.txtファイルがソートされている場合、なぜTie :: Fileが行を追加しますか?

one;4;1 
two;3;2 
three;2;3 
four;1;4 

スクリプト出力

line count before: 4 
line count after: 5 

そして実際に実行すると

#!/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; 

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

+0

わかりませんが、回避策は 'grep {$ _} @ lines'をソートすることです。 – kjprice

答えて

6

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

アンタイドリスト変数への一時的な割り当ては、回避策

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

であるが、これはまだ私にはバグのようなにおい、そしてあなたはreport it必要があります。

更新Already reported(当社独自のikegami以下)。 Perlmonksのディスカッションhere

+0

レポートでニースを見つけてください。 +1 – squiguy

+3

クレジット[@ Squeezyの](http://stackoverflow.com/users/2137516/squeezy)バグレポートとperlmonksへのリンクの削除された答え。 – mob

2

related PerlMonks discussionに記載されているように、@lines = ((), sort @lines);を使用してバグを回避することができます。

関連する問題