如果您忘记了包末尾的 1,Perl 会告诉您“包没有返回真值”。好吧,如果它知道你忘记了,为什么不直接把它放在那里呢?
因为 Perl 模块需要返回一个值来指示
require
指令是否必须成功(返回真值)或失败(返回假值;如果模块由于某种原因未能初始化,这可能是有意义的)。
如果不返回任何内容,解释器无法知道
require
一定成功还是失败;同时,由于很容易忘记将真实值放在包的末尾,因此建议对此错误的“常见修复”:添加真实值作为返回。
有关模块返回值的其他一些信息/民间传说,请查看这个问题。
如果包无法初始化,例如找不到所需的数据文件或外部库,则可能会返回错误值。这样,它就会在加载时彻底失败(甚至可以测试这种失败),而不是稍后不可预测地失败。
A Perl module must end with a true value or else it is considered not to
have loaded. By convention this value is usually 1 though it can be
any true value. A module can end with false to indicate failure but
this is rarely used and it would instead die() (exit with an error).
1;
当模块加载时(通过使用) 编译器会抱怨,除非 最后一条语句执行的时间 已加载是真的。该行确保 情况就是这样(只要你不 在此行之后放置任何代码)。它是 Perl 确保它的方法 一路成功解析到 文件末尾。
参见链接
您可以使用任何评估为 true 的语句。 1 恰好成为 Perl 惯用语。