2009-12-08 15 views
14

Was ist der einfachste Weg, alle Elemente einer Liste getrennt durch Line Feeds in Perl zu drucken?Wie kann ich Listenelemente getrennt durch Zeilenvorschübe in Perl drucken?

+0

keine Notwendigkeit, Lust zu bekommen . gehe durch die Elemente, drucke sie aus, gefolgt von \ n. leicht genug? – ghostdog74

+0

Ich würde eigentlich die gegenteilige Position argumentieren; Dieses Perl wurde speziell geschaffen, um "schick" zu werden, zu bleiben und zur Schau zu stellen. Als Referenz empfehle ich: https://www.youtube.com/watch?v=O-zpOMYRi0w – lol

Antwort

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

In Perl 5.10:

say for @list; 

Ein anderer Weg:

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

Or (5.10):

say join "\n", @list; 

Oder wie abo ut:

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

Ich neige dazu, ein Dummy-Element am Ende der Liste hinzuzufügen: 'print join (" \ n ", @list, '')' –

+0

Das funktioniert für diesen Fall, aber nicht so gut, wenn Sie es mit etwas verbinden möchten Anders als Newlines (die ich gelegentlich mache), und wenn Sie Ihre Meinung ändern, wie Sie wollen, dass das Ausgabeformat aussieht, macht es nur ein wenig mehr Arbeit. –

+0

Warum funktioniert '' nicht für @list; 'mit Perl 5.26? Ist es wirklich nur für Perl 5.10? – Wolf

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

Dies wird keine neue Zeile am Ende drucken, die nicht schlecht ist unter Windows, aber auf * nix-Systemen hässlich aussehen wird. –

+5

Und? Die Frage sagt spezifisch * getrennt durch *. –

+0

Die meisten Leute wollen Zeilenumbrüche an den Enden der Dinge, die sie drucken, drucken. Aus diesem Grund bieten die meisten Sprachen eine Funktion, die genau das tut. Sogar C tut es mit 'puts()'. –

7

Warum nicht globale Variablen Perl missbrauchen, anstatt

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

Wenn Sie unnötige Variableninterpolation erregt fühlen sich frei, diese Version zu verwenden, anstatt:

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

Natürlich, wir _Could_ einfach diese globale Variable Missbrauch sicher und hygienisch machen: 'sub arrprint (\ @; $$) {my @ a = @ {shift()}; lokale $ \ = @_? Verschiebung: $ \; local $, = @_? Verschiebung: $ ,; drucke @ $ aref; } '(Code nicht getestet) –

Verwandte Themen