$color_of{apple} = "red";
print $color_of{apple};
Run Code Online (Sandbox Code Playgroud)
当我甚至没有初始化哈希时,上面的代码是打印红色的.这是perl允许的吗?它会一直编译吗?
我不记得确切的代码,但是当地图未明确初始化时,我得到以下错误.
Global symbol "%map" requires explicit package name at ....
Run Code Online (Sandbox Code Playgroud)
代码链接:http://ideone.com/NJDTUj
你得到那个错误use strict,你应该总是这样做.您还应该始终use warnings打开警告.
它被认为是一种很好的做法,并且称为现代Perl(在Perl 5.08之后或多或少的所有内容,不要引用我),总是有严格的警告.他们确保你没有愚蠢的错误,强制你声明变量,告诉你两次声明它们等等.
因此,答案是,你并不需要到申报*任何在Perl的变量,但你应该无论如何做.坦率地说,如果你和其他人一起工作,如果你不这样做,那些人就会讨厌你.
#!/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};
Run Code Online (Sandbox Code Playgroud)
*) 声明变量意味着你告诉Perl有一个变量.你这样做my,这使得一个词法变量只存在于一个块内(如a sub或者花括号内部 if (1) { ... }.初始化变量意味着在使用它之前给它一个值.通常这是同时完成的在Perl中声明它.如果你不这样做,变量将是undef,这是完全正常的.
更加严格的方法是use strictures,您需要从CPAN安装.
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |