2009-12-08 5 views
14

改行で区切られたリストのすべての要素をPerlで印刷する最も簡単な方法は何ですか? 5.10で改行で区切られたリスト要素をPerlでどのように印刷できますか?

+0

空想を取得する必要はありませんが。要素を通り、それらをプリントアウトしてから\ nを実行します。十分に簡単ですか? – ghostdog74

+0

私は実際に反対の立場を主張するでしょう。そのperlは具体的に作成され、滞在し、「派手」を誇示しました。参考までに私は以下を推奨します:https://www.youtube.com/watch?v=O-zpOMYRi0w – lol

答えて

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

say for @list; 

別の方法:

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

または(5.10):

say join "\n", @list; 

またはどのようにABO UT:

あなたが不要な変数補間のための興奮代わりに、このバージョンを使用して自由に感じる場合は、Perlのグローバル変数の代わりに

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

乱用しないのはなぜ

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

私はリストの最後にダミー要素を追加する傾向があります: 'print join(" \ n "、@list、 '')' –

+0

このケースでは機能しますが、 (私が時々行う)改行以外では、出力形式をどのように見たいかを気にするならば、ちょっとした作業が必要になります。 –

+0

Perl 5.26で '@list; for say for 'と言うのはなぜですか?本当にPerl 5.10のみですか? – Wolf

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

これは最後に改行を印刷しません。これはWindowsでは悪くないが、* nixシステムでは見苦しくなります。 –

+5

そして?質問には、特に*が区切られています。 –

+0

ほとんどの人は、改行が印刷されたものの端に印刷されることを望みます。だからこそ、ほとんどの言語がまさにそのような機能を提供しています。 Cでも 'puts()'でそれを行います。 –

7

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

もちろん、 _could_このグローバル変数の濫用を安全かつ衛生的にするだけです: 'sub arrprint(\ @; $$){my @a = @ {shift()};ローカル$ \ = @_?シフト:$ \;ローカル$、= @?シフト:$、; print @ $ aref; } '(コード未テスト) –

関連する問題