exitの上書き
- 投稿者: まかまか
- カテゴリ: 本体
- 優先度: 低
- 状態: リリース済
- 日時: 2004年03月27日 16時10分09秒
内容
3.5系のwiki.cgiのBEGINブロック内
use subs 'exit'; require Apache; *exit = \&Apache::exit;
上記の処理ですが、use subs はカレントパッケージのサブルーチンを宣言するので、wiki.cgi内のexitが書き換わります。ですが実際にはwiki.cgi内でexitは使われていません。加えて、useしているのでmod_perlの有無に関係なくexitが宣言されます。wiki.cgi内にexitを加えて通常のCGIとして利用するとUndefined subroutine &main::exit calledと警告されます。
これは他のモジュールやプラグインが呼び出すexitの書き換えを意図しているのでしょうか。もしそうでしたら
# use subs 'exit' --- 削除 require Apache; *CORE::GLOBAL::exit = \&Apache::exit;
という書き方の方がよいと思うのですが、如何でしょうか。(もっとも、今のApache::RegistryやApache::PerlRunは自動的に*CORE::GLOBAL::exitを上書きするそうで)
コメント
- ご指摘ありがとうございます。手元のmod_perl環境で確認して、消してしまっても問題ないようであれば消してしまいます。 - たけぞう (2004年03月27日 22時46分55秒)
- 3.5.3でリリースしました。 - たけぞう (2004年04月10日 17時28分46秒)
最終更新時間:2014年01月28日 15時40分35秒