是否有与Python';s`if_uuuname_uuu=='__主要的&';`?

是否有与Python';s`if_uuuname_uuu=='__主要的&';`?,python,perl,executable,Python,Perl,Executable,有没有办法确定当前文件是否是在Perl源代码中执行的文件?在Python中,我们使用以下构造来实现这一点: if __name__ == '__main__': # This file is being executed. raise NotImplementedError 我可以使用FindBin和\uuuuu文件\uuuuuu一起破解一些东西,但我希望有一种规范的方法可以做到这一点。谢谢 unless (caller) { print "This is the scri

有没有办法确定当前文件是否是在Perl源代码中执行的文件?在Python中,我们使用以下构造来实现这一点:

if __name__ == '__main__':
    # This file is being executed.
    raise NotImplementedError
我可以使用
FindBin
\uuuuu文件\uuuuuu
一起破解一些东西,但我希望有一种规范的方法可以做到这一点。谢谢

unless (caller) {
  print "This is the script being executed\n";
}

看。它在主脚本中返回
unde
。请注意,这在子例程内部不起作用,只在顶级代码中起作用。

请参阅本文的“应用程序的子类(第18章)”部分。

除非调用方
很好,但更直接的并行以及更明确的检查是:

使用英语qw;
如果($PROGRAM_NAME eq_____文件{
...
}
我只是想把它放在那里

编辑


请记住,
$PROGRAM\u NAME
(或“
$0
”)是可写的,因此这不是绝对的。但是,在大多数实践中——除了意外事件或暴乱模块——这可能不会改变,或者最多在另一个范围内改变

这并不能保证有效。首先,$0($PROGRAM\u name的真实名称)实际上是Perl中的一个可写变量。但文件不受更改$0的影响。不仅$0是可变的。
use English qw<$PROGRAM_NAME>;

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