2009-12-08 36 views
14

Cách dễ nhất để in tất cả các phần tử của danh sách được phân tách bằng nguồn cấp dữ liệu dòng trong Perl là gì?Làm cách nào để in các phần tử danh sách được phân tách bằng nguồn cấp dữ liệu dòng trong Perl?

+0

không cần phải có được ưa thích . đi qua các phần tử, in chúng ra, sau đó \ n. vừa đủ dễ? – ghostdog74

+0

Tôi thực sự sẽ tranh luận vị trí trái ngược; mà perl được tạo ra đặc biệt để có được, ở lại và phô trương 'ưa thích'. Để tham khảo, tôi khuyên bạn nên: https://www.youtube.com/watch?v=O-zpOMYRi0w – lol

Trả lời

30
print "$_\n" for @list; 

Trong Perl 5.10:

say for @list; 

Một cách khác:

print join("\n", @list), "\n"; 

Hoặc (5.10):

say join "\n", @list; 

Hoặc cách abo ut:

print map { "$_\n" } @list; 
+0

Tôi có xu hướng thêm phần tử giả vào cuối danh sách: 'in tham gia (" \ n ", @list, '')' –

+0

Điều đó phù hợp với trường hợp này, nhưng không tốt lắm nếu bạn muốn tham gia với một thứ gì đó khác với newlines (mà tôi thỉnh thoảng làm), và nếu bạn thay đổi tâm trí của bạn về cách bạn muốn định dạng đầu ra để xem xét, làm điều đó chỉ làm cho nó mất một chút công việc thêm. –

+0

Tại sao không 'nói cho @list;' làm việc với Perl 5.26? Nó thực sự chỉ dành cho Perl 5.10? – Wolf

6
print join "\n", @list; 
+1

Điều này sẽ không in một dòng mới ở cuối, điều này không tệ trên Windows nhưng sẽ trông xấu xí trên các hệ thống * nix. –

+5

Và? Câu hỏi cụ thể nói * cách nhau bởi *. –

+0

Hầu hết mọi người đều muốn in dòng mới ở cuối những thứ họ in. Đó là lý do tại sao hầu hết các ngôn ngữ cung cấp một chức năng làm chính xác điều đó. Thậm chí C làm điều đó với 'puts()'. –

7

Tại sao không lạm dụng các biến toàn cục Perl thay vì

local $\ = "\n"; 
local $, = "\n"; 
print @array; 

Nếu bạn có hứng thú đối với suy biến không cần thiết thoải mái sử dụng phiên bản này để thay thế:

local $" = "\n"; 
print "@array\n"; 
+2

Tất nhiên, chúng tôi _could_ chỉ làm cho biến toàn cầu này lạm dụng an toàn và vệ sinh: 'sub arrprint (\ @; $$) {my @a = @ {shift()}; local $ \ = @_? shift: $ \; local $, = @_? shift: $ ,; in @ $ aref; } '(mã chưa được kiểm tra) –

Các vấn đề liên quan