Perldata给出了以下示例。
$field = $query->radio_group(
name => 'group_name',
values => ['eenie','meenie','minie'],
default => 'meenie',
linebreak => 'true',
labels => \%labels
);我对这个例子的理解是,“radio-group”被用作散列“query”的关键字。这个关键字“radio-group”本身是一个散列引用,包括name=‘group_name’等等。此外,这个由“radio_group”标识的散列引用被分配给$field。如果我的理解有误,请纠正我。
发布于 2011-12-22 20:41:06
$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。
发布于 2011-12-22 21:23:05
这是从object $query对"radio_group“方法的调用。这里没有哈希,只有一堆用逗号和胖逗号(=>)分隔的参数对。来自perlop:
=>运算符是逗号的同义词,不同之处在于,如果左操作数以字母或下划线开头且仅由字母、数字和下划线组成,则它会导致左操作数被解释为字符串。这包括可能被解释为运算符、常量、单个数字v字符串或函数调用的操作数。如果对此行为有疑问,可以显式引用左操作数。否则,根据上下文,=>运算符的行为与逗号运算符或列表参数分隔符完全相同。
发布于 2011-12-22 20:48:42
这相当于这样写:
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的存在https://stackoverflow.com/questions/8603955
复制相似问题