在perl中初始化哈希值是否可选?

时间:2015-07-20 11:30:59

标签: perl

$color_of{apple} = "red";
print $color_of{apple}; 

当我甚至没有初始化哈希时,上面的代码正在打印 red 。这是perl允许的吗?它会一直编译吗?

我无法记住确切的代码,但是当地图未明确初始化时,我遇到以下错误。

Global symbol "%map" requires explicit package name at ....

代码链接:http://ideone.com/NJDTUj

1 个答案:

答案 0 :(得分:6)

当你use strict时,你应该总是这样做。您还应始终use warnings打开警告。

这被认为是一种很好的做法,并且称为现代Perl(在Perl 5.08之后或多或少的一切,不要引用我),总是有严格和警告。他们确保你没有愚蠢的错误,强制你声明变量,告诉你两次声明它们等等。

所以答案是,你不需要声明 * Perl中的任何变量,但你应该< / strong>无论如何都要这样做。坦率地说,如果你和其他人一起工作,如果你不这样做,那些人就会讨厌你。

#!/usr/bin/env perl
use strict;
use warnings;
use feature 'say';

my %color_of; # no need to put () unless you explicitly want an empty list
$color_of{apple} = 'red';

say $color_of{apple};

*) Declaring变量意味着你告诉Perl有一个变量。您使用my执行此操作,这使得a lexical variable仅存在于块中(如sub)或if (1) { ... }的大括号内。Initializing变量意味着在使用之前给它一个值。通常这是在Perl中声明它的同时完成。如果你不这样做,变量将是undef,这是完全正常的。 / p>

更严格的方法是use strictures,您需要从CPAN安装。