在一些perl模块中,我看到代码:
if (exists $h->{Location}) {
%args = (%args, -Status => 302);
}
Run Code Online (Sandbox Code Playgroud)
为什么作者使用-Status
而不仅仅是Status
?
当我必须使用' - '签名哈希密钥名称时,为什么我会破解我自己的模块?
UPD
阅读答案似乎它们必须相同,但它们不是
my $a = { -status => 'a', status => 3, };
print $a->{ status }, $a->{ -status };
print pp $a;
Run Code Online (Sandbox Code Playgroud)
OUTPUT
3a{ -status => "a", status => 3 }
Run Code Online (Sandbox Code Playgroud)
我的perl5(修订版5版本20颠覆2)配置摘要:
这是否意味着旧模块现在坏了?
这是一件历史文物.为其函数使用hash-key参数约定的第一个主要模块之一是Perl/Tk,它从TCL/Tk(它移植自来自)的密钥上引入了初始破折号命名约定.它传播并且很受欢迎.在我们使用"胖逗号"(=>
)运算符之前,它有助于将键名和它们的参数区分开来.除了个人品味之外,今天真的没有理由使用它.