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

我知道{}可以用来引用散列键,但是{}在这里意味着什么?{}在perl中的含义是什么?

+0

是该样本代码的东西你做或者你觉得它在某个地方?因为它没有多大意义:) – Flimzy

+0

@ Flimzy,是的这是一个人为的。 –

+3

好吧...设置$ B = {$ A =>“”}没有多大意义(这是有效的代码,但不是很有用),因为它的键值设置为一个字符串化hashref ..输出自卸车($ b)看起来像:** 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

hashref不是匿名的,它是哈希值。它不代表hashref,它创建一个。 – ikegami

+0

感谢您纠正我 - 回答相应更新。 – Flimzy

+0

那么,{}是一个匿名哈希构造函数。它创建一个引用,其值可以存储在一个变量中。尽管如此,还没有引用该散列的名称。你必须使用参考。不过,确实没有一个匿名参考。 –

8

{},在这种情况下,是匿名哈希构造。

它创建一个新的散列,将curlies内的表达式的结果赋给散列,然后返回对该散列的引用。

换句话说,

{ EXPR } 

大致相当于

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

EXPR可以为空,什么都没有。)

perlref