この前FizzBuzzのコードをどれだけ短くできるかに挑戦して、62byteでギブアップしたとき、最短のコードが48byteだと分かった。 そのコードがこれ。 print+(Fizz)[$_%3].(Buzz)[$_%5]||$_,$/for 1..1e2 これがどういう動作をしてるのか、分からないと夜しか眠れない。 というよりも、分からないのが気に食わない。 分からないことがあるのが嫌な性分なので、分かるまで徹底的に調べてみる。 まず問題なのは、print+の部分の+。 このプラス記号は、「単項プラス演算子」という名前らしい。 これは「関数の引数を関数実行より先に評価する場合に有効」らしい。 一応perldocを見てみる。 「perlop - Perl の演算子と優先順位」の単項演算子の項目を見ると、 「単項演算子の "+" は、たとえ文字列に対して用いられた場合にも、