2013-08-05 16 views
5

aşağıdaki biçimde veri içerdiğinden, söz-frekans adında bir metin dosyası, okuyorum:Perl push fonksiyonunun endeks değerleri yerine dizi elemanlarını verir

1 

1 

13 

2 

Ben satırları okuyup değerlerini saklamak istediğiniz böyle bir dizide: @a=(1, 1, 13, 2). Perl basma fonksiyonu, istenen çıktım yerine dizin değerleri/satır numaraları, yani 1,2,3,4 verir. Lütfen hatayı işaret edebilir misiniz? İşte benim yaptığım budur:

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

ben 'twoHandsTwoCutsFunction' fonksiyonu :) gibi' alt {haritası {s/^ \ s + //; s/\ s + $ //; $ _} @_} ' – gaussblurinc

cevap

10

böcek Eğer @a concatenation ve bir yeni satır baskı olmasıdır. Birleştirdiğinizde, bu skalar bağlamı zorlar. Bir dizinin skaler hissi, içeriği değil, onun eleman sayısıdır.

Sadece yerine

print "@a\n"; 

istiyorum. Burada kodunuzu etkilemez iken Ayrıca

, kayıt terminatör kaldırmak için normal yolu chomp kullanıyor <> taleb operatör tarafından okunan:

chomp $line;