()と、[]および{}の違いについて

()
リストを作成するコンストラクタ
無名配列は作成できない。¥(...)のような書き方は予期した動作をしない(単に最後の値のリファレンスが作成される)。

 [ ]
リストのリファレンスを作成するコンストラクタ
※無名配列の参照を作成する関数と言える。

{}
ハッシュのリファレンスを作成するコンストラクタ
※同様に、無名ハッシュの参照を作成する。


なお、()や[ ]を使ってハッシュおよびハッシュのリファレンスを作成することもできる。
なぜなら、文法的には、ハッシュは(key1, value1, key2, value2, ...)と並んでいるリストを、ハッシュとみなしているだけだから。
(高速アクセスのために内部的には二分木などのデータ構造で保持しているはずだが)

ハッシュの初期化では、普通以下のように書くが、
my %hash = ("hoge"=>"test");

これは、以下の文と同義である。
my %hash = ("hoge","test");

つまり、ハッシュの初期化において、=>演算子は、,演算子とほぼ同じ働きをする。
※厳密には違う。=>の左側は引用符が無くとも自動的に文字列として認識する。



ちなみに、[ ]がリストのリファレンスを作成するということは、
以下のような文も正常に動作する。
my @list = @{[1,2,3]};
※[1,2,3]で作成された無名配列の参照を、@{}でデリファレンスしている。

以下同様。説明略。
my %hash = %{{"hoge"=>"test"}};
最終更新:2011年10月25日 05:31
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。