Perldata给出了以下示例。
$field = $query->radio_group(
name => 'group_name',
values => ['eenie','meenie','minie'],
default => 'meenie',
linebreak => 'true',
labels => \%labels
);
我对这个例子的理解是,“radio-group”被用作散列“查询”的关键字。这个密钥“radio-group”本身就是一个hashref,包括name ='group_name'等。此外,由“radio_group”标识的这个hashref被分配给$ field。如果我的理解有误,请纠正我。
答案 0 :(得分:4)
$query->radio_group
是方法调用。
在这个特定示例中,该方法在对象实例 $query
上被调用,其中哈希包含给定的键值对。
如下所示:
my %tmp = (
name => 'group_name',
values => ['eenie','meenie','minie'],
default => 'meenie',
linebreak => 'true',
labels => \%labels
);
$field = $query->radio_group(%tmp);
应该清楚地表明散列的参数集合是独立的 $query
本身。
然后将该方法调用的结果分配给$field
。
答案 1 :(得分:4)
这是对来自对象$ query的方法“radio_group”的调用。那里没有哈希,只有一堆参数对用逗号和逗号逗号分隔(=>)。来自perlop:
=> operator是逗号的同义词,除了它导致它 左操作数如果以字母开头则被解释为字符串 或下划线,仅由字母,数字和下划线组成。 这包括可能被解释为的操作数 运算符,常量,单数V字符串或函数调用。如果在 对此行为有疑问,左操作数可以明确引用。 否则,=>运算符的行为与逗号运算符完全相同 列表参数分隔符,根据上下文。
答案 2 :(得分:0)
这相当于写作:
my %params = (
name => 'group_name',
values => ['eenie','meenie','minie'],
default => 'meenie',
linebreak => 'true',
labels => \%labels
);
$field = radio_group( $query, %params );
所以radio_group
根本不是哈希键,而是子程序/方法/函数。
告诉标志是:
[]
和{}
,用于表示数组索引和散列键()
radio_group
parens的存在