2013-08-05 16 views
5

Tôi đang đọc một tập tin văn bản được đặt tên, đề cập đến-freq, trong đó có dữ liệu theo định dạng sau:Perl chức năng đẩy cho giá trị chỉ số thay vì các phần tử mảng

1 

1 

13 

2 

Tôi muốn đọc những dòng và lưu trữ các giá trị trong một mảng như sau: @a=(1, 1, 13, 2). Hàm đẩy Perl cung cấp các giá trị chỉ số/số dòng, tức là 1,2,3,4, thay vì đầu ra mong muốn của tôi. Bạn có thể vui lòng chỉ ra lỗi? Đây là những gì tôi đã thực hiện:

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

Tôi thích 'twoHandsTwoCutsFunction' chức năng :)' tiểu {map {s/^ \ s + //; s/\ s + $ //; $ _} @_} ' – gaussblurinc

Trả lời

10

Lỗi là bạn đang in ghép nối @a và dòng mới. Khi bạn nối, điều đó buộc bối cảnh vô hướng. Cảm giác vô hướng của một mảng không phải là nội dung của nó mà là số phần tử của nó.

Bạn chỉ muốn

print "@a\n"; 

để thay thế.

Ngoài ra, trong khi nó sẽ không ảnh hưởng đến mã của bạn ở đây, theo cách thông thường để loại bỏ các terminator kỷ lục đọc bởi các nhà điều hành <> readline đang sử dụng chomp:

chomp $line;