【问题标题】:What reason to use '-' sign in perl hash key name?在 perl 哈希键名中使用“-”符号的原因是什么?
【发布时间】:2015-11-23 22:06:03
【问题描述】:

在一些 perl 模块中我看到代码:

if (exists $h->{Location}) {
    %args = (%args, -Status => 302);
}

为什么作者使用-Status 而不仅仅是Status
当我必须在哈希键名称中使用“-”符号时,为什么我要破解自己的模块?

UPD
阅读答案似乎它们必须相同,但它们不是

my $a =  { -status => 'a', status => 3, };
print $a->{ status }, $a->{ -status };
print pp $a;

输出

3a{ -status => "a", status => 3 }

我的perl5(revision 5 version 20 subversion 2)配置总结:

这是否意味着旧模块现在已损坏?

【问题讨论】:

    标签: perl hash


    【解决方案1】:

    这是一件历史文物。 Perl/Tk 是第一个对其功能使用散列键参数约定的主要模块,它从 TCL/Tk(它是从 TCL/Tk 移植过来的)引入了初始破折号命名约定。它传播开来,并在一段时间内很受欢迎。回到我们有“胖逗号”(=>)运算符之前,它有助于区分键名和它们的参数。今天真的没有理由使用它,除了个人口味。

    【讨论】:

    • 没有。或者至少不是自动的。
    【解决方案2】:

    这是一个约定。类似于程序可以从命令行获取的选项,例如“ls -l”。许多 Perl 程序员在将参数传递给子例程时使用它来更加清晰。这样您的程序就更具可读性和易于维护。

    【讨论】:

      猜你喜欢
      • 2012-12-19
      • 2012-03-12
      • 2013-09-13
      • 2012-01-01
      • 1970-01-01
      • 2012-10-07
      • 1970-01-01
      • 2012-04-23
      • 2011-08-29
      相关资源
      最近更新 更多