字符串 "name" 之间的大括号在 Perl 中意味着什么?

Curly bracket in between the string "name" means in Perl?

我只是想知道在下面的示例中,字符串 "name" 之间的花括号在 Perl 中意味着什么?这是我的第一个问题,请保持温和,我是 perl 的新手

my $pool_name = $result->get->pool_attr("name")->{"name"};

$pool_name 是存储结果的地方。

$result 是保存对象的变量。

->get 是对对象 $result 的操作。

->pool_attr("name") 获取 ->get 操作的哈希项的值。

->{"name"} 访问与名称 "name" 关联的匿名散列值 ->pool_attr("name")

具体回答问题,花括号是什么。我会在这里说它们是哈希引用的语法。

这么小的片段没有太多要解释的,但想想这个:

%hash = (
    'name'              => "Harsha",
    'designation'      => "Manager"
);

$hash_ref = \%hash;

当我们需要引用特定元素时,我们可以使用 -> 运算符。

my $name =  $hash_ref->{name};

这是一个稍微修改过的例子,取自 - http://www.thegeekstuff.com/2010/06/perl-hash-reference/

Perl 这样有点简洁。这里有两个概念需要理解:-

  1. Perl 对象访问
  2. Perl 参考访问

就像java一样,我们可以在perl中引用。如果您有 C 背景,请将它们视为 C 中的指针。现在,如果我们想使用引用访问任何内容,我们使用“->”符号。还有更多的概念,比如祝福 etc.But 我们不会深入讨论。但一件重要的事情是 Perl 对象也像 HASH。因此,对 perl 对象成员等的所有访问都以类似于哈希的方式完成(哈希引用,而不是哈希对象)。

所以,我们有一个对象 $result。 $result->get 调用 Object 的 Get 方法。这个方法returns另外一个对象给你。我们称它为温度。

现在,再次在此对象上,我们使用函数参数 "name" 调用成员函数 pool_attr。这个函数returns的HASH终于给你了。

请记住,Perl 哈希的行为类似于 perl 对象,因此我们使用类似的表示法访问 "name" 键。

你可以使用 print Data::Dumper::Dumper 函数,它会告诉你更多关于数据结构的信息。但是请注意,perl 对象是一种 hack,因此您可能会看到很多不必要的混乱 Data::Dumper::Dumper。