!!1 とか !1 とかが PL_yes と PL_no になってるかどうか手軽にみる方法 以下のように、-MO=Terse すると、コンパイル時に定数の畳み込み最適化的な奴でたたみこまれて sv_yes とか sv_no になってることがわかる。 % perl -MO=Terse -e 'print !!1' LISTOP (0x1ea6180) leave [1] OP (0x1e96ba0) enter COP (0x1ea5c60) nextstate LISTOP (0x1ea62c0) print OP (0x1e97510) pushmark SVOP (0x1ea6410) const SPECIAL (0x2) sv_yes % perl -MO=Terse -e 'print !1' LISTOP (0x1151180) leave [1] OP (0x1141ba0)