Perlの==とeq 簡単な実験をしてたら、勘違いが判明。Perlではリファレンスを文字列として扱うと、"変数型(ポインタ)“みたいな値になる。 C:\> perl -e "$h = {}; $s = qq($h); print qq($h, $s);" HASH(0x275ea0), HASH(0x275ea0)じゃあ、これをeqと==で比較したらどうなるか。「Perlで文字列を比較する時は==じゃなくeq」というのは良く知られてると思う。==で文字列を比較すると、何でもかんでも一致してしまう。例えば、以下の例では空文字列と'abcd'が一致とか、結構ずいぶん。 C:\>perl -e "print ('' == 'abcd' ? 'equal' : 'not equal');" equalこれがeqで比較するとnot equalになるので、てっきり「==は同値、eqは型まで一致」とチェ
![sinkin' in the rain - Perlの==とeq](https://cdn-ak-scissors.b.st-hatena.com/image/square/e64ede238628fdd2c4afa9c2ec626d27fac2da67/height=288;version=1;width=512/http%3A%2F%2Fassets.tumblr.com%2Fimages%2Fog%2Ffb_landscape_share.png)