2012-05-01 332 views
2

我想輸出在一個線,現在是好的,如:所以上述打印相同的行多次在Perl

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

是一條線的樣子。但我也想打印這些行$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)對於perl中的變量名是很差的選擇,即使在拋棄的例子中,因爲它們[特殊](http://perldoc.perl.org/perlvar.html#%24a)。 – pilcrow

+0

* C風格* for循環在Perl中幾乎沒有用處。代替使用'for(LIST){..}'。 – Borodin

回答

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

是IMO比C風格的for(;;)循環簡單。

+0

事實上,這比'(((「$ a \ t」x 99)。「$ b \ n」)x $ c)'更可取,因爲它不會通過創建一個可能的大列表來增加內存使用量到'打印'。 –

+1

如果我們談論優化,while循環也會避免爲循環創建一個數字列表。例如。 'print ... while $ i ++ <= $ how_many' – TLP

+2

@TLP:你已經過時了! 'perlop'(Range Operators)說,*在當前實現中,當範圍運算符用作foreach循環*中的表達式時,不會創建臨時數組。 – Borodin

4

是的,你已經有了你所需要的一切。

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