2009-12-08 18 views
14

Bir listenin tüm öğelerini Perl'deki satır beslemeleriyle ayırarak yazdırmanın en kolay yolu nedir? Perl 5.10'daSatır besleme ile ayrılmış liste öğelerini Perl'de nasıl yazdırabilirim?

+0

fantezi olsun gerek . öğelerini gözden geçirin, ardından yazdırın \ n. yeterince kolay? – ghostdog74

+0

Aslında tam tersini tartışacağım; Bu perl, 'fantezi' almak, kalmak ve gösteriş yapmak için özel olarak yaratıldı. Referans için şunu tavsiye ederim: https://www.youtube.com/watch?v=O-zpOMYRi0w – lol

cevap

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

:

say for @list; 

başka yöntem

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

ya da (5.10):

say join "\n", @list; 

ya da ne kadar Abo ut:

gereksiz değişken enterpolasyon için heyecanlanmak yerine bu sürümü kullanmaktan çekinmeyin Eğer Perl'in küresel değişkenler yerine

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

kötüye Neden

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

Listenin sonunda bir kukla öğe ekleme eğilimindeyim: 'print join (" \ n ", @list, '')' –

+0

Bu durum için işe yarayabilir, ancak bir şeyle birleştirmek istiyorsanız o kadar iyi değil. Yeni satırlardan başka (ki bunu zaman zaman yaparım) ve çıktının nasıl görünmesini istediğinize dair fikrinizi değiştirirseniz, bunu yapmak biraz fazladan iş gerektiriyor. –

+0

Neden @list için değil '' Perl 5.26 ile çalış? Gerçekten sadece Perl 5.10 için mi? – Wolf

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

Bu, sonunda Windows'da kötü olmayan ancak çirkin * nix sistemlerinde görünecek bir satır sonu yazmaz. –

+5

Ve? Soru özellikle * ile ayrılmış * diyor. –

+0

Çoğu kişi, yazdırdıkları şeylerin sonuna yazdırılan yeni satırları istiyor. Bu yüzden çoğu dil tam olarak bunu yapan bir işlev sunar. Hatta C bile koyar() 'ile. –

7

:

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

Elbette, biz _could_ sadece bu global değişken istismarını güvenli ve sıhhi hale getiriyor: 'sub arrprint (\ @; $$) {my @a = @ {shift()}; yerel $ \ = @_? shift: $ \; yerel $, =? vardiya: $ ,; print @ $ aref; } '(test edilmemiş kod) –

İlgili konular