1と!!1の違いが分からない。
!!'test' ならやりたいことは分かる。
!!1はやりたいことが分からない。
ひとまずDumpしてみた。
use strict; use warnings; use Devel::Peek; # SV = IV(0xdf12788) at 0xdf12798 # REFCNT = 1 # FLAGS = (IOK,READONLY,pIOK) # IV = 1 Dump(1); # SV = PVNV(0xdefde30) at 0x74cea0 # REFCNT = 2147483644 # FLAGS = (IOK,NOK,POK,READONLY,pIOK,pNOK,pPOK) # IV = 1 # NV = 1 # PV = 0xdefeb10 "1"\0 # CUR = 1 # LEN = 16 Dump(!!1);
分からない。
追記
@memememomo 内部的にどうなるかというよりは、真偽値であることを読み手に強調する意味で使われるイメージですねー
— Cside (@Cside_) 2013, 8月 23
強調なんですね。確かに「んん!?」となりましたが。