2011-06-22 18 views
3
my $a = {}; 
my $b = {$a=>''}; 

私は{}がハッシュキーを参照するために使用できることを知っていますが、{}はどういう意味ですか?{}はperlで何を意味しますか?

+0

は、あなたが作っているサンプルコードのものですあなたはどこかでそれを見つけましたか?それはあまり意味がないので: – Flimzy

+0

@ Flimzy、はいそれは考案されたものです。 –

+3

さて、... $ b = {$ a => ''}を設定することは意味がありません(有効なコードですが、あまり有用ではありません)。キー値を文字列化されたhashrefに設定するためです。 ** VAR1 = {'HASH(0xb62d48)' => '}}; **有用である可能性はあまりありません:) – Flimzy

答えて

11

{}は、空の匿名ハッシュへの参照を作成します。続きを読むhere

例コード:

use Data::Dumper; 
my $a = {}; 
print "a is " . Dumper($a); 
my %b =(); 
print "b is " . Dumper(\%b); 

出力:

a is $VAR1 = {}; 
b is $VAR1 = {}; 
+2

ハッシュリファレンスは匿名ではなく、ハッシュです。ハッシュリファレンスを表すものではなく、ハッシュリファレンスを作成します。 – ikegami

+0

私を訂正してくれてありがとう - それに応じて更新された答え。 – Flimzy

+0

まあ、{}は匿名のハッシュコンストラクタです。これは、値を変数に格納できる参照を作成します。それでも、そのハッシュを参照する名前はありません。あなたは参照を使用する必要があります。しかし、実際には匿名の参照はありません。 –

8

{}は、この文脈では、匿名のハッシュコンストラクタです。

新しいハッシュを作成し、中括弧内の式の結果をハッシュに割り当ててから、そのハッシュへの参照を返します。言い換えれば

{ EXPR } 

do { my %hash = (EXPR); \%hash } 

とほぼ同等である(EXPRがNULL、何もすることはできません。)

perlref

関連する問題