2009-12-08 20 views
14

在Perl中打印所有由換行符分隔的列表元素的最簡單方法是什麼?如何在Perl中打印由換行符分隔的列表元素?

+0

沒必要弄花哨。瀏覽元素,然後打印出來\ n。夠簡單嗎? – ghostdog74 2009-12-08 03:41:41

+0

我實際上會爭辯相反的立場; perl是專門爲獲得,保持和炫耀'幻想'而創建的。作爲參考我推薦:https://www.youtube.com/watch?v=O-zpOMYRi0w – lol 2014-09-07 13:36:19

回答

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

在Perl 5.10:

say for @list; 

另一種方式:

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

或(5.10):

say join "\n", @list; 

還是怎麼ABO UT:

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

我傾向於在列表末尾添加一個虛擬元素:'print join(「\ n」,@list,'')' – 2009-12-08 01:45:28

+0

這適用於這種情況,但如果您想要將其與某些內容除了換行符(我偶爾會這樣做)之外,如果您改變了想要輸出格式的外觀,那麼這樣做只需要一些額外的工作。 – 2009-12-08 01:50:03

+0

爲什麼不對'@list'說'使用Perl 5.26?它真的只適用於Perl 5.10嗎? – Wolf 2017-11-22 09:40:08

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

這不會在最後打印換行符,這在Windows上並不壞,但在* nix系統上看起來很醜。 – 2009-12-08 01:16:51

+5

而且?這個問題具體說*用*分隔。 – 2009-12-08 01:17:53

+0

大多數人希望在他們打印的東西的末尾印刷換行符。這就是爲什麼大多數語言提供了完全相同的功能。即使C用'puts()'做它。 – 2009-12-08 01:24:32

7

爲什麼不能濫用Perl的全局變量,而不是

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

如果你感到興奮不必要的變量代換隨意使用這個版本來代替:

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

當然,我們_could_只是使這個全局變量濫用安全和衛生:'sub arrprint(\ @; $$){my @a = @ {shift()};本地$ \ = @_?轉移:$ \;本地$,= @_?轉移:$ ;; print @ $ aref; ''(代碼未經測試) – 2009-12-08 01:42:05