有没有办法确定当前文件是否是在Perl源中执行的文件?在Python中,我们使用以下构造执行此操作:
if __name__ == '__main__':
# This file is being executed.
raise NotImplementedError
我可以使用FindBin
和__FILE__
一起破解某些内容,但我希望有一种规范的方法可以做到这一点。谢谢!
答案 0 :(得分:45)
unless (caller) {
print "This is the script being executed\n";
}
见caller。它在主脚本中返回undef
。请注意,这在子例程中不起作用,仅在顶级代码中有效。
答案 1 :(得分:10)
请参阅brian d foy文章Five Ways to Improve Your Perl Programming中的“应用程序的子类(第18章)”部分。
答案 2 :(得分:3)
unless caller
很好,但更直接的并行,以及更多显式检查,是:
use English qw<$PROGRAM_NAME>;
if ( $PROGRAM_NAME eq __FILE__ ) {
...
}
我以为我会把它放在那里。
编辑
请记住$PROGRAM_NAME
(或“$0
”)是可写的,所以这不是绝对的。但是,在大多数实践中 - 除了意外事件或横冲直撞的模块 - 这可能不会在另一个范围内更改或更改locally。