这个代码块由Perl本身类似于子程序所以调用返回的东西只是执行结束块执行和值将被忽略。如果您想退出程序,请使用退出。
#!/usr/bin/perl
use 5.010;
BEGIN {exit 0}
say "start";
return 1;
也有另一种方式来使用$?
但acording到perldoc它是为END
块唯一的工作。
[OP评论]
@teodozjan正确地提到,你能以某种中断编译(相应地启动)通过调用BEGIN
(RESP。INIT
)块exit
过程。
应当指出的是,exit 0
比return 0
虽然是很不同的效果:
return 0
是Perl的语法说:“从这个功能块的出口和产量按您的来电者”。它看起来像返回值,当你从一个BEGIN
或INIT
块调用它没有影响,但你仍然得到“这里停止功能执行”部分,和Perl保持运行(编译/启动持续使用时间)。
exit 0
是Perl的语法说“现在停止整个程序,并得到这个值作为进程的退出状态”。它将工作以同样的方式从BEGIN
或INIT
块中:Perl会立即停止编译/执行程序,并退出状态(如:$?
在你的shell)将0
。
btw,0
是传统的退出状态,说“一切正常”。如果你想发出一个错误,你应该以某种方式与exit
非零状态(或称croak()
或die()
:退出状态将是255)。
http://perldoc.perl.org/perlmod.html#BEGIN,-UNITCHECK,-CHECK,-INIT-and-END – teodozjan 2014-12-03 09:31:57
@teodozjan:我读到了,我没有看到任何提及的返回值从'BEGIN/INIT'块中。我错过了什么 ? – LeGEC 2014-12-03 09:52:04