boost::formatみたいな指定ができるPerlのsprintf()
% perl -E'say sprintf(q[%d %d %d], 1, 2, 3)'
1 2 3% perl -E'say sprintf(q[%2$d %3$d %1$d], 1, 2, 3)'
http://id-perl.blogspot.com/2010/04/tip-sprintf.html
2 3 1
「%2$d」のように指定すると2引数目が取れるんですね。文字列なら「%2$s」。
ちなみにPythonではこんな風にもできるらしい。
print 'This {food} is {adjective}.'.format(adjective='absolutely horrible', food='spam') # => This spam is absolutely horrible.
http://id-perl.blogspot.com/2010/04/tip-sprintf.html
これはいいなーと思っていたらそれString::Formatterでできるそうで
# $extra = {mverb => "harus"}; # mverb juga bisa 'sebaiknya'
http://id-perl.blogspot.com/2010/04/tip-sprintf.html
# $args = [1, 10];
print stringf("Data %(mverb)s di antara %(0)d sampai %(1)d", $args, $extra); # => Data harus lebih kecil di antara 1 sampai 10.
こんな風に書けるらしい。
他にもuse時にいろいろ引数を渡して挙動を変えるなどできるらしい。*2
詳しくはperldocで。