-2

ソースファイルを復号化して実行するローダープログラムを作成しています。各ソースファイルにはCurses::UI、ユーザーがユーザーインターフェイスを終了するために使用できるサブルーチンを含むベースのプログラムが含まれています。exitただし、ユーザーが終了した後にクリーンアップを実行する必要がありますが、これらをキャッチする方法や呼び出しを行う方法がわからないdieため、必要なファイルの後に続くクリーンアップコードが実行されます。

4

1 に答える 1

3

次のように、コードをブロックでdieラップすることにより、呼び出しをキャッチできます。eval

eval {
    require Module::that_dies;
};
if ($@) {
    # handle the exception here
}

しかし、これは役に立ちませんexitexitブロックの後にクリーンアップするコードを実行することもできますがEND{}、これは、必要なモジュールが終了した場合だけでなく、終了後に実行されることに注意してください。

END { 
    # code that runs after exit
}

require Module::that_exits;

END ブロックの詳細については、perldoc perlmod

于 2011-10-10T08:47:58.053 に答える