花括号在访问对象时有什么区别

What difference does curly brace make in accessing an object

甚至不确定我是否使用了正确的术语.. 这是传递的数据。

$bug = bless({
'bug_id' => '25252',

'flag_types' => [
    bless({
      'name' => 'name1',
      'flags' => [bless({
        'id' => 488052,
      }, 'Bugzilla::Flag')],
    }, 'Bugzilla::FlagType'), 
    bless({
      'name' => 'name2',
      'flags' => [bless({
        'id' => 488053,
      }, 'Bugzilla::Flag')],
    }, 'Bugzilla::FlagType'), 
  ],

}, 'Bugzilla::Bug');

为什么我可以引用带或不带花括号的 name,但不能引用 flags$_->flags 给出错误

Can't locate object method "flags"
                my @isCrash = map { 
                    print Dumper($_->name);
                    print Dumper($_->{name});
                    print Dumper($_->flags); # errors
                    print Dumper($_->{flags};                    
                } @{ $bug->{flag_types} };

我知道 flags 不是方法,但为什么我没有收到 name 的错误?

您的数组包含 Bugzilla::FlagType 类型的对象,它们有一个方法 name 表示“Returns 标志类型的名称”。