可能重复:
什么是有效的 Perl 模块返回值?
一般我们1;在模块末尾使用。这是为了表明模块返回true并且可以正确导入。现在如果我们返回mean ,这0意味着false模块导入失败。
我的问题是,如果我在模块末尾使用(或返回)下面的语句怎么办
-1;some text;- 或者
abc;
表示-1错误,并且some text,abc表示true
另外,如果我根本不使用1;或不使用任何语句(如上),那么在这种情况下模块会返回什么?
它回来了undef吗?
可能重复:
什么是有效的 Perl 模块返回值?
一般我们1;在模块末尾使用。这是为了表明模块返回true并且可以正确导入。现在如果我们返回mean ,这0意味着false模块导入失败。
我的问题是,如果我在模块末尾使用(或返回)下面的语句怎么办
-1; some text;abc;表示-1错误,并且some text,abc表示true
另外,如果我根本不使用1;或不使用任何语句(如上),那么在这种情况下模块会返回什么?
它回来了undef吗?
任何真值都表示成功。-1 是一个真值。
return 不必在文件的末尾;它是最后一个可执行语句的返回值(也就是说,最后一个语句不仅仅是编译时的东西,比如 package、use、no、sub、format)。
例如,需要包含以下内容的文件:
package foo;
our @x;
sub bar { }
如果@foo::x 为空则失败,否则成功。
如果确实没有可执行语句,则返回值为 undef (false)。
就像 sub 一样,模块返回的值是最后一条语句返回的值。如果文件为空,我想它是 undef 。(这绝对不是真正的价值。)
模块应始终返回一个真值(除零、空字符串或 undef 以外的任何值)。
-1是真的,所以这是可以接受的。some text是等效于 的间接方法调用text->some()。
text->some()(和等价的)当且仅当该方法返回一个真值时是可接受的。为了安全起见,我会跟进一个真正的常量。abc是等效于 的子例程调用abc(),或等效于 的字符串文字'abc'。
abc()(和等价的)当且仅当子例程返回真值时是可接受的。为了安全起见,我会跟进一个真正的常量。'abc'(和等价的)是真的,所以这是可以接受的。如果有错误,die则改为。但是,如果合理的话,即使这样也应该避免,因为如果有人捕捉到异常,它会使模块半加载(半执行)。
这些都是真的,模块将编译。但是,在更积极的诊断下,我看到编译器会发出关于 1 以外的值的警告。实际上这个“1;” 可以放在任何一条线上。我有时把它放在我正在调试的代码中间,只是为了有很好的调试断点行。
许多程序在较低的诊断级别上运行时不会出现问题,因为在最后一个表达式中意外地有各种真值,不一定是最后一行。
$a = "意外地让 -c 开心的真正价值。";
子你好{返回;}