2013-08-05 13 views
5

Czytam plik tekstowy o nazwie, wspominając Częstotliwość, która ma dane w następującym formacie:Perl funkcja Push daje wartości indeksu zamiast elementów tablicy

1 

1 

13 

2 

chcę czytać wiersze i przechowywania wartości w takiej tablicy: @a=(1, 1, 13, 2). Funkcja wypychania Perla podaje wartości indeksu/numery linii, tj. 1,2,3,4, zamiast żądanych wyników. Czy mógłbyś wskazać błąd? Oto co zrobiłem:

use strict; 
use warnings; 

open(FH, "<mention-freq") || die "$!"; 
my @a; 
my $line; 
while ($line = <FH>) 
{ 
    $line =~ s/\n//; 
    push @a, $line; 
    print @a."\n"; 
} 
close FH; 
+0

Lubię 'twoHandsTwoCutsFunction' funkcji :)' sub {map {s/^ \ s + //; s/\ s + $ //; $ _} @_} ' – gaussblurinc

Odpowiedz

10

Bug jest to, że są drukowane konkatenację @a i przełamane. Kiedy się łączyć, to wymusza skalarny kontekst. Zmysł skalarny tablicy nie jest jej zawartością, lecz licznikiem elementów.

Po prostu chcesz

print "@a\n"; 

zamiast.

Ponadto, choć nie wpłynie kod tutaj, normalny sposób, aby usunąć rekord terminator odczytywane przez operatora <> readline korzysta chomp:

chomp $line; 
Powiązane problemy