2013-04-02 14 views
7

mam ten mały skrypt Perla, który ma uporządkować plik:Dlaczego Tie :: Plik dodaje wiersz, jeśli plik jest posortowany?

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

Uruchomiony z tego wejścia (fileToBeSorted.txt)

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

skrypt wyprowadza

line count before: 4 
line count after: 5 

i rzeczywiście , posortowany plik zawiera pustą piątą linię. Dlaczego tak jest i jak mogę temu zapobiec?

+0

Nie wiem, ale rozwiązaniem jest "sort grep {$ _} @ lines' – kjprice

Odpowiedz

6

Jak wspomniano w usuniętym już answer, wydaje się, że jest to znany błąd.

tymczasowy przypisanie do zmiennej listy wiązanej jest obejście

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

ale nadal pachnie bug do mnie, a zalecana report it.

Aktualizacja: Already reported (przez nasz własny ikegami, nie mniej). Perlmonks dyskusja here.

+0

Nice find na raporcie. +1 – squiguy

+3

Skasowano odpowiedź [@ Squeezy's] (http://stackoverflow.com/users/2137516/squeezy) dla linków do raportu o błędzie i perlmonks. – mob

Powiązane problemy