我遇到了几个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;
1的意义是什么?和大括号包围$ somevar和Sub?
解决方法
1在模块的结尾意味着该模块返回true以使用/ require语句。它可以用于判断模块初始化是否成功。否则,使用/ require将失败。
$ somevar是一个只在块内可访问的变量。它用于模拟“静态”变量。从Perl 5.10开始,您可以使用关键字state
关键字具有相同的结果:
## Starting from Perl 5.10 you can specify "static" variables directly. sub Somesub { state $somevar; }