为什么这个Perl代码使用1; 声明?

Laz*_*zer 3 perl

可能重复:
你为什么要放一个1; 在Perl 5模块的最后?

从这个页面Perl :: Critic :: Policy :: Subroutines :: RequireFinalReturn,这是一个代码示例

package Password;
# every time the user guesses the password wrong, its value
# is rotated by one character
my $password;
sub set_password {
    $password = shift;
}
sub check_password {
    my $guess = shift;
    if ($guess eq $password) {
        unlock_secrets();
    } else {
        $password = (substr $password, 1).(substr $password, 0, 1);
    }
}
1;
Run Code Online (Sandbox Code Playgroud)
  • 为什么1;最后使用?该语句对编译器有何意义?

我尝试使用不使用代码.结果看起来一样.

Mat*_*nen 7

这是因为Perl模块必须返回"true"才能使其作为模块运行.如果模块没有返回true,则假定它的初始化失败并且它等同于调用die.但是,如果代码不用作模块,则不需要,因此除非您尝试将代码示例用作模块,否则您将看不到差异.

1; 可能只是回归真实的最简洁方法之一.

如果您查看此网站,您会发现人们对其返回值非常有创意.