Is there a Perl equivalent to Python's `if __name__ == '__main__'`?

别等时光非礼了梦想. 提交于 2019-12-03 04:21:44
unless (caller) {
  print "This is the script being executed\n";
}

See caller. It returns undef in the main script. Note that that doesn't work inside a subroutine, only in top-level code.

Chas. Owens

See the "Subclasses for Applications (Chapter 18)" portion of brian d foy's article Five Ways to Improve Your Perl Programming.

unless caller is good, but a more direct parallel, as well as a more explicit check, is:

use English qw<$PROGRAM_NAME>;

if ( $PROGRAM_NAME eq __FILE__ ) { 
    ...
}

Just thought I'd put that out there.

EDIT

Keep in mind that $PROGRAM_NAME (or '$0') is writable, so this is not absolute. But, in most practice--except on accident, or rampaging modules--this likely won't be changed, or changed at most locally within another scope.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!