在阅读FormFiller(我偶然得到的)提供的片段时,我注意到这一行:
$f->add_filler( password => Interactive => []);
此password => Interactive => []
是否等同于{"password" => {"Interactive"=>[]}}
?如果没有,它会变成什么?
答案 0 :(得分:7)
=>
在语义上(几乎)与,
完全相同(请参阅perldoc perlop处的“逗号运算符”),所以你这样做:
$f->add_filler( 'password', 'Interactive', [] );
如果方法(它没有)支持这种调用样式,那么它本身就必须将这些参数转换为
{ password => { Interactive => [] } }
然而更典型的是,哈希样式的参数将作为合法哈希传递开始:
$f->add_filler( password => { Interactive => 1 } );
这将由以下函数接收:
sub add_filler
{
my $this = shift;
my %configs = @_;
# ...
}
答案 1 :(得分:5)
不,它与
完全相同$f->add_filler( "password", "Interactive", []);
答案 2 :(得分:5)
Data::Dumper
模块非常适合回答这样的问题。使用以下模拟:
package Foo;
use Data::Dumper;
sub new { bless {} => shift }
sub add_filler {
my $self = shift;
print Dumper \@_;
}
然后叫它
package main;
my $f = Foo->new;
$f->add_filler( password => Interactive => []);
看看你什么时候:
$VAR1 = [
'password',
'Interactive',
[]
];
这表明add_filler
收到一个包含三个参数的平面列表:两个字符串和一个匿名数组的引用。