fml8 チュートリアル (バージョン 7.99.1-20180910)
Prev | Chapter 33. 設定ファイル config.cf | Next

# 展開後に変数を代入すると？

$ をふくむ変数に値の代入が行なわれると、 その場では評価されません。

次に、値を取り出すメソッド [1] が呼ばれた際に、初めて変数の再展開が行なわれます。

たとえば

    $config->{ key } = '$ml_home_dir/value';

という代入処理が行なわれると、次に

    $config->{ another_key }

(キーはなんでもよい)メソッドが呼ばれた際に、 変数群すべてが再評価されます (たがいに依存関係があるため、すべての変数が評価されなければなりません)。

## 内部構造: 変数展開

少し内部構造の話をします。

値の代入操作が行なわれると、 まずは %_fml_config に キーと値 の組が保存されます。 これは $dir/$file のような代入した値そのままです。

get() メソッドは、 %_fml_config ではなく %_fml_config_result の値を返しています。 %_fml_config_result 中の値は $dir などが展開された後の値で、 /var/spool/ml/elena/file などとなっています。 この変数の値の展開は get() メソッドなりが呼ばれた際に初めて行なわれます。

### Notes

[1] | perl の tie() 操作

Prev | Home | Next
config.cf の多重読み込み(変数定義の上書き) | Up | 変数一覧 (alphabetical order)

fml 8.0 (fml-devel) project homepage is www.fml.org/software/fml8/.
fml 4.0 project homepage is www.fml.org/software/fml4/.
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>.