tokuhirom's Blog

sprintf の引数の挙動

sprintf に配列で引数をわたそうとするとはまる。

use strict;
use warnings;
use utf8;
use 5.10.0;

sub fmt { sprintf(@_) }
sub fmt2 { my $format = shift; sprintf($format, @_); }

say(fmt("Hello, %s", "John"));
say(fmt2("Hello, %s", "John"));
2
Hello, John

えてしてこういう罠があるので perl5 は常に驚きをもって接っすることが可能となっている。