perl hash with fat逗号

时间:2014-06-08 05:29:22

标签: perl hash

我已经读过在为哈希定义键值时使用胖逗号,我们不需要在键周围放置quotes ''来表示它是一个字符串。但是,我发现如果我在密钥周围包含quotes,它仍然可以正常工作,就好像它忽略了''

以下声明是否可以安全使用?

$result = { 
     'Bill' => { Java => 56, C => 78, Perl => 90 } , 
     'Mary' => { Java => 82, C => 65, Perl => PX, Python => 72},
};

2 个答案:

答案 0 :(得分:7)

使用胖逗号时,你没有 NEED 使用单引号,如果你愿意,可以 MAY 。这是可选的。

胖逗号只是一个逗号,唯一的区别是如果存在一个单词,一个没有引号的单词,那么它会将该单词视为单引号。

来自perlop

  

=> operator是逗号的同义词,除了它导致a   如果它以a开头,则左边的单词被解释为字符串   字母或下划线,仅由字母,数字和字母组成   下划线。这包括可能的操作数   解释为运算符,常量,单数V字符串或   函数调用。如果对此行为有疑问,左操作数可以   明确引用。

答案 1 :(得分:3)

使用带有逗号的引号''是可选的。使用胖逗号Perl知道它是一个哈希键,如果你仍然想要明确地做,那么它取决于你。

使用许多命名参数的Moose和其他半关键字库,您经常会看到如下代码:

has 'name' => (
    is => 'rw',
    isa => 'Str'
);

has 'age' => (
    is => 'rw',
    isa => 'Int'
);

该代码没有任何问题,但它让一些人感到困惑。

chromatic的相关文章:The Fat Comma and Clarity