有没有办法确定当前文件是否是在 Perl 源代码中执行的文件?在 Python 中,我们使用以下结构来做到这一点:
if __name__ == '__main__':
# This file is being executed.
raise NotImplementedError
FindBin
我可以使用and一起破解一些东西__FILE__
,但我希望有一种规范的方式来做到这一点。谢谢!
有没有办法确定当前文件是否是在 Perl 源代码中执行的文件?在 Python 中,我们使用以下结构来做到这一点:
if __name__ == '__main__':
# This file is being executed.
raise NotImplementedError
FindBin
我可以使用and一起破解一些东西__FILE__
,但我希望有一种规范的方式来做到这一点。谢谢!
unless (caller) {
print "This is the script being executed\n";
}
见来电者。它undef
在主脚本中返回。请注意,这在子例程中不起作用,仅在顶级代码中起作用。
请参阅brian d foy的文章五种改进 Perl 编程的方法中的“应用程序的子类(第 18 章)”部分。
unless caller
很好,但更直接的并行以及更明确的检查是:
use English qw<$PROGRAM_NAME>;
if ( $PROGRAM_NAME eq __FILE__ ) {
...
}
只是以为我会把它放在那里。
编辑
请记住,$PROGRAM_NAME
(或' $0
')是可写的,所以这不是绝对的。但是,在大多数实践中——除了事故或暴发模块——这可能不会改变,或者最多在另一个范围内本地改变。