Chapter 41. HOOK

Table of Contents
概要もしくは HOOK における諸問題
hook の命名規則

概要もしくは HOOK における諸問題

hook は微妙な修正、もしくは複雑なカスタマイズのために是非必要です。 ですが、実装においてはいくつかの問題があります。

まず、fml4 の $START_HOOK のような曖昧なものではなく、 hook の名前に一定の基準が必要でしょう。 そのため fml8 では、ある関数の最初と最後にHOOKを用意する場合、 次のようなスタイルの HOOK 名称になっています。

$役割_関数_start_hook
$役割_関数_end_hook

これにより配送システムとコマンドメールシステムで共通の HOOK などという ものはなくなり、別々のHOOKをしかけることができるようになります。逆に、 共通のものをしかけようとするなら、一杯書いて下さい;)ということです。 まぁコピーすればいいだけだから、さして難しくないですよね?(と思いたい)

$distribute_XXX_start_hook = q{ ... };
$YYY_XXX_start_hook = $distribute_XXX_start_hook;

また、HOOK の書き方が少々良くなくても動かないと困るでしょう。 通常、各モジュールでは

use strict;
になっていますが、HOOK を評価する lexical scope では無視するようにして あります。 実際には、HOOK を評価する際に、つねに
no strict;
HOOK の内容
という構文に変換した上で eval() しています。

fml4 と fml8 の大きなちがいのひとつは変数、関数のスコープです。 fml4 はグローバルなので、どんな関数でも使えますが、fml8 では、そう はいきません。とはいえ、まったく手がかりがないのも困るので、$curproc が使えるような場所にのみ HOOK を用意するといったルールが必要でしょう。 いまのところ、そういう方針になっています。

fml 8.0 (fml-devel) project homepage is www.fml.org/software/fml8/.
fml 4.0 project homepage is www.fml.org/fml/menu.ja.html.
about one floppy bsd routers, see www.bsdrouter.org/.
other free softwares are found at www.fml.org/software/.

author's homepage is www.fml.org/home/fukachan/.
Also, visit nuinui's world :) at www.nuinui.net.

For questions about FML, e-mail <fml-bugs@fml.org>.