作者: ねこ丸
日時: 2007/9/10(15:57)
  ねこ丸です。

  またくだらない疑問なのですが教えてください。

 Perl で、Hash の「ある key」を指定する場合、

  my %hash = ();
  $hash{'key1'} = 'val';    # (i)
  $hash{key2}   = 'val2';   # (ii)

  i と ii のどちらが正しいんでしょうか?
  どちらも正しいんでしょうか?

  strict と warnings を付けてもどちらでも問題なく動いているようなので
どっちでもいいのかなと思っているのですが、私が Perl を学んだ当時(って
いつ?)は i の方法が当たり前だったような気がしています。しかし OO のサ
ンプルとしてよく出てくるハッシュリファレンスへのアクセスでは ii のよう
に書かれていることがほとんどです。

  どっちでもいいのだとすると内部的にはどういう処理になっているんでしょ
うか?  なんだかとても不思議です。

  ちなみに PHP では {} の中味は必ず ' で囲みましょうと言われています。
PHP の場合は bare word はまず定数として解釈され、かつその名前の定数が
定義されていない場合はその bare word は文字列として解釈される、という
超絶ステキな機能があるので、ii の $hash{key2} はたまたま key2 という定
数がセットされていない限り Perl と同じ動作をします。(つまりものすごく
危険な書き方です。)

--
    ねこ丸