sub func { return 100; } みたいなサブルーチンがあった時に, say(func - 99); みたいな感じで呼び出すと,パッと見 1 が出力されそうに見えるが,実際は 100 が出力される. これは - 99 が func の引数として解釈されて食われるためである. B::Deparse するとわかりやすい. $ perl -MO=Deparse func.pl sub func { use warnings; use strict; use feature 'say'; return 100; } use warnings; use strict; use feature 'say'; say func(-99); func.pl syntax OKここから,二項演算子としての振る舞いを期待していた - が 99 と結合して単項演算子として扱われ, -99 が引数