如果你忘记了软件包末尾的1,Perl会告诉你“软件包没有返回真值”。好吧,如果它知道你忘了它,为什么不把它放在那里呢?
答案 0 :(得分:38)
因为如果require
指令必须成功(返回真值)或失败(返回false值,则需要Perl模块返回一个值来表示信号;如果模块由于某种原因未能初始化,这可能有意义)
如果您没有返回任何内容,则口译员无法知道require
是否必须成功或失败;同时,由于很容易忘记将真值放在包的末尾,它建议对此错误进行“常见修复”:添加一个真值作为返回。
有关模块返回值的其他信息/民间传说,请查看this question。
答案 1 :(得分:5)
如果包无法初始化,则包可以返回false值,例如,如果找不到所需的数据文件或外部库。这样它在加载时干净地失败(甚至可以测试这个失败),而不是以后不可预测。
答案 2 :(得分:4)
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).
答案 3 :(得分:3)
1;
加载模块时(通过使用) 编译器会抱怨,除非 最后一个语句执行时 加载是真的。这条线确保了这一点 情况就是这样(只要你不这样做 在此行之后放置任何代码)。它的 Perl确保它的方式 成功解析到了 文件的结尾。
请参阅http://mathforum.org/~ken/perl_modules.html
您可以使用任何评估为true的语句。 1恰好成了一个成语。