Perl でハッシュのキーに使える値を疑問に思ったので簡単に実験。undef
や空文字列もキーに使えるんですね。
use Data::Dumper; my %hash; $hash{ 0 } = 'numeric zero'; $hash{ '0' } = 'sigle quoted zero'; # over write above $hash{ '0'} = 'escaped zero in sigle quotes'; $hash{ "0"} = 'escaped zero in double quotes'; $hash{ 0 } = 'escaped zero in non quotes'; $hash{ A } = 'Uppercase character A'; $hash{ a } = 'lowercase character A'; $hash{ '' } = 'empty string'; $hash{undef} = 'undefined value'; print Dumper(%hash);
$VAR1 = { '' => 'empty string', 'A' => 'Uppercase character A', ' ' => 'escaped zero in double quotes', 'a' => 'lowercase character A', 'undef' => 'undefined value', 'SCALAR(0x182fae4)' => 'escaped zero in non quotes', '0' => 'sigle quoted zero', '0' => 'escaped zero in sigle quotes' };
寄せられたコメント (全 1 件中、最新 5 件まで表示しています)
単なる文字列の 'undef' になっちゃうみたいです。
括弧内で @{[undef]} するか或は変数に入れた undef値 をキーにすると、
警告は出ますが、代入されました。
ただし今度は空文字列 "" に変換されちゃいます。
[結果]
undefと書く: 文字列 'undef' と見なされる。
undef値: 空文字列に変換される。警告付き。
空文字列: キーに使える。