我遇到了一些Perl模块,例如类似于以下代码:
package MyPackage;
use strict;
use warnings;
use constant PERL510 => ( $] >= 5.0100 );
require Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw( );
{ #What is the significance of this curly brace?
my $somevar;
sub Somesub {
#Some code here
}
}
1;
Run Code Online (Sandbox Code Playgroud)
1;
包围$somevar
和Sub 的花括号的意义是什么?
Iva*_*uev 67
1
在模块的端部是指,该模块返回true
到use/require
语句.它可用于判断模块初始化是否成功.否则,use/require
将失败.
$somevar
是一个只能在块内访问的变量.它用于模拟"静态"变量.从Perl 5.10开始,您可以使用关键字state
关键字来获得相同的结果:
## Starting from Perl 5.10 you can specify "static" variables directly.
sub Somesub {
state $somevar;
}
Run Code Online (Sandbox Code Playgroud)
Perl模块必须返回评估为true的内容.如果他们不这样做,Perl报告错误.
C:\temp>cat MyTest.pm
package MyTest;
use strict;
sub test { print "test\n"; }
#1; # commented out to show error
C:\temp>perl -e "use MyTest"
MyTest.pm did not return a true value at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
C:\temp>
Run Code Online (Sandbox Code Playgroud)
虽然习惯使用"1;",但任何评估为true的东西都会起作用.
C:\temp>cat MyTest.pm
package MyTest;
use strict;
sub test { print "test\n"; }
"false";
C:\temp>perl -e "use MyTest"
C:\temp> (no error here)
Run Code Online (Sandbox Code Playgroud)
对于显而易见的原因,另一种流行的返回值是42.
在http://returnvalues.useperl.at/values.html上有一个很酷的返回值列表.
归档时间: |
|
查看次数: |
17461 次 |
最近记录: |