2012-05-01 8 views
2

で数回同じライン:印刷は次のように、今も元気で、私は1行で出力したいperlの

print "$a\t" x 99; 
print "$b\n"; 

は、したがって、上記の1行がどのように見えるかです。しかし、私はまた、これらの行を$c回印刷したいと思います。

for ($i = 1; $i <= $c; $i++) { 
    print "$a\t" x 99; 
    print "$b\n"; 
} 

だけ"$a\t" x 99のように、そうするより簡単な方法があります:様ループのためにそれを行うのではなく使用するショートカットはありますか?

+2

['$ a'](http://perldoc.perl.org/perlvar.html#%24a)と[' $ b'](http://perldoc.perl.org/perlvar。 html#%24b)は、[specialness](http://perldoc.perl.org/perlvar.html#%24a)のために、perlの変数名のための貧弱な選択肢です。 – pilcrow

+0

* Cスタイルの* forループは、Perlではほとんど役に立ちません。代わりに 'for(LIST){..}'を使用してください。 – Borodin

答えて

7
for (1 .. $how_many) { print "$foo\t" x 99, "$bar\n"; } 

(;;)ループのCスタイルよりIMO簡単です。

+0

実際、これは '((" $ a \ t "x 99)。" $ b \ n ")x $ c)'よりも優先されます。印刷する。 –

+1

最適化を話している場合、whileループはループの数値のリストを作成しないようにします。例えば。 'print ... while $ i ++ <= $ how_many' – TLP

+2

@TLP:あなたは時代遅れです! 'perlop'(Range Operators)は次のように言います。*現在の実装では、range演算子がforeachループ*の式として使用されているときには一時配列は作成されません。 – Borodin

4

はい、あなたはすでにそれを必要としています。

print ((("$a\t" x 99)."$b\n") x $c);