32

現在のファイルが Perl ソースで実行されているファイルかどうかを判断する方法はありますか? Python では、次の構文でこれを行います。

if __name__ == '__main__':
    # This file is being executed.
    raise NotImplementedError

FindBinと を使用して何かを一緒にハックできますが__FILE__、これを行う標準的な方法があることを願っています。ありがとう!

4

3 に答える 3

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

呼び出し元を参照してください。undefメインスクリプトに戻ります。これはサブルーチン内では機能せず、最上位コードでのみ機能することに注意してください。

于 2009-04-01T19:39:55.410 に答える
10

brian d foyの記事「Perlプログラミングを改善するための5つの方法」の「アプリケーションのサブクラス(第18章)」の部分を参照してください。

于 2009-04-01T19:43:18.493 に答える
4

unless callerは良いですが、より直接的な並列、およびより明示的なチェックは次のとおりです。

use English qw<$PROGRAM_NAME>;

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

私はそれをそこに出すと思った。

編集

$PROGRAM_NAME(または' $0')は書き込み可能であるため、これは絶対的なものではないことに注意してください。しかし、ほとんどの場合、事故や暴れ回るモジュールを除いて、これは変更されないか、せいぜい別のスコープ内でローカルに変更される可能性があります。

于 2009-04-02T15:00:16.463 に答える