$color_of{apple} = "red";
print $color_of{apple};
当我甚至没有初始化哈希时,上面的代码正在打印 red 。这是perl允许的吗?它会一直编译吗?
我无法记住确切的代码,但是当地图未明确初始化时,我遇到以下错误。
Global symbol "%map" requires explicit package name at ....
答案 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安装。