6.5.1 配列とprintf

少し工夫すれば、配列もリストコンテキストでprintf命令の引数として簡単に使用できる。

例えば、はてな主要サービス名を整形して出力するとする。

工夫をしないと、

my @services = qw(
		 hatena.question
		 hatena.antenna
		 hatena.bookmark
		 hatena.diary
		 );
printf "hatena services are...\n%20s\n%20s\n%20s\n%20s\n", @services;

この様なコードとなり、事前に配列servicesの要素数ぶん"%20s\n"を記述する必要がある。
が、

printf "hatena services are...\n%20s\n%20s\n%20s\n%20s\n", @services;

この部分を

printf "hatena services are...\n" . ("%20s\n" x @services), @services;

このように書くことで配列servicesに更に要素を追加した時でも、変更が不要となる。

ちなみに出力結果は以下のようになります。


hatena services are...
hatena.question
hatena.antenna
hatena.bookmark
hatena.diary