2009-12-08 11 views
14

Jaki jest najłatwiejszy sposób wydrukowania wszystkich elementów listy oddzielonych wierszami w Perlu?Jak mogę wydrukować elementy listy oddzielone wierszami w Perlu?

+0

nie trzeba się kręci . przejrzyj elementy, wydrukuj je, a następnie \ n. Wystarczająco łatwe? – ghostdog74

+0

Ja rzeczywiście argumentowałbym przeciwnie; że perl został stworzony specjalnie po to, aby uzyskać, pozostać i afiszować się "fantazyjnie". W celach referencyjnych polecam: https://www.youtube.com/watch?v=O-zpOMYRi0w – lol

Odpowiedz

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

W Perl 5.10:

say for @list; 

Innym sposobem:

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

Albo (5.10):

say join "\n", @list; 

Albo jak abo UT:

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

Mam tendencję do dodawania fikcyjnego elementu na końcu listy: 'print join (" \ n ", @list, '')' –

+0

To działa w tym przypadku, ale nie tak dobrze, jeśli chcesz dołączyć do niego z czymś inne niż znaki nowej linii (które czasami robię) i jeśli zmienisz zdanie na temat tego, jak chcesz wyglądać format wyjściowy, zrobienie tego sprawia, że ​​potrzeba trochę dodatkowej pracy. –

+0

Dlaczego 'say for @list;' nie działa z Perlem 5.26? Czy to naprawdę tylko dla Perla 5.10? – Wolf

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

To nie wydrukuje znaku nowej linii na końcu, co nie jest złe w systemie Windows, ale będzie wyglądać paskudnie na systemach * nix. –

+5

I? Pytanie wyraźnie mówi * oddzielone *. –

+0

Większość ludzi chce, aby znaki drukowane na końcach drukowanych przedmiotów. Dlatego większość języków zapewnia funkcję, która właśnie to robi. Nawet C robi to za pomocą 'puts()'. –

7

Dlaczego nie nadużywać zmienne globalne Perla zamiast

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

Jeśli denerwować zbędnego zmiennej interpolacji zachęcamy do korzystania z tej wersji Zamiast:

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

Oczywiście, my _ może spowodować, że ta globalna nadużycie będzie bezpieczne i higieniczne: 'sub arrprint (\ @; $$) {my @a = @ {shift()}; lokalne $ \ = @_? shift: $ \; lokalne $, = @_? shift: $ ,; print @ $ aref; } '(kod nietestowany) –

Powiązane problemy