Perl “怎么做?”;{};(大括号)创建散列,为什么我可以将其存储为标量?

Perl “怎么做?”;{};(大括号)创建散列,为什么我可以将其存储为标量?,perl,hash,Perl,Hash,以下代码为: $rec = { name => "Jason", age => 23, peers => [ "Norbert", "Rhys", "Phineas"], }; 这是一个字符串还是某种散列(我以为散列是用%声明的)?它是指向散列的(一种指针)。引用(如Perl中以“$”开头的任何引用)是标量,在本例中是“指向”非标量值的标量 @ta = (10,20,30); # array $tb = [10,20,30]; # reference

以下代码为:

$rec = {
  name  => "Jason",
  age   => 23,
  peers => [ "Norbert", "Rhys", "Phineas"],
};
这是一个字符串还是某种散列(我以为散列是用
%
声明的)?

它是指向散列的(一种指针)。引用(如Perl中以“$”开头的任何引用)是标量,在本例中是“指向”非标量值的标量

  @ta = (10,20,30); # array
  $tb = [10,20,30]; # reference to an array
  %tc = (name => 'John', age => 23); # hash
  $td = {name => 'John', age => 23}; # reference to a hash

  print( $ta[1] . "\n");
  print( $tb->[1] . "\n");

  print( $tc{'name'} . "\n");
  print( $td->{'name'} . "\n");

理解引用对于任何Perl编程来说都是必不可少的。例如,您需要使用引用来创建嵌套结构(数组的数组等)。

{}
创建哈希和对它的引用,并返回后者

{ a => 1, b => 2 }
大致相当于

do { my %anon = ( a => 1, b => 2 ); \%anon }

此运算符记录在中。

请参阅perldsc和perllol,在将perltoot放入混合之前应了解它们:---it(
{…}
)的计算结果为HASHREF(标量)。让它,-超链接也在注释中工作。我从