perl:hash的autoivivifcation作为object-> new()的参数?

jas*_*cks 0 perl

来自perlootut:

  my $cage = File::MP3->new(
      path          => 'mp3s/My-Body-Is-a-Cage.mp3',
      content       => $mp3_data,
      last_mod_time => 1304974868,
      title         => 'My Body Is a Cage',
  );
Run Code Online (Sandbox Code Playgroud)

我不明白这里发生了什么.它看起来是自动生成,如果是这样,那么new会传递类名和对新哈希的引用吗?

Thi*_*Not 5

不涉及自动更新.您可能会对=>运算符的使用感到困惑:

=>运营商的不同之处在于它会导致在它的左边一个字,如果它以字母开头或下划线被解释为一个字符串,只有字母,数字和下划线是由逗号的代名词.

虽然=>通常在声明哈希时使用,但它本身不会创建哈希.

您发布的代码相当于

my $cage = File::MP3->new(
    'path',          'mp3s/My-Body-Is-a-Cage.mp3',
    'content',       $mp3_data,
    'last_mod_time', 1304974868,
    'title',         'My Body Is a Cage',
);
Run Code Online (Sandbox Code Playgroud)

这只是将八个项目的列表传递给new方法.