« 今日の日記 | Main | 今日の日記 »

2007.10.31

Higher-Order Perlは面白い!

Higher-Order Perl、Chapter2に入りました。

VERBOSITY 8
CHDIR /usr/local/app

のように文字列が並んでいる設定ファイルを読み込む話。一行ずつ読み込んで、splitしてまでは同じ。
普通にif elsifを並べるのではなく、

$dispatch_table =
{ CHDIR => \&change_dir,
  LOG_FILE => \&open_log_file,
  VERBOSITY => \&set_verbosity
}
というような、コマンドと飛び先のテーブルを作ると良いという話。関数のポインター並べて、テーブルジャンプは組み込みプログラマなら良くやる処理。割り込みベクタとか、テーブルジャンプそのものだし。

同じ事をPerlでやると俄然面白くなる。テーブルは変数なので、DEFINEが出てきたら以降の文字列を置き換える、といった処理も追加可能。新しい命令を作る命令なんかを定義しても、テーブルに追加するだけ。これはすごい。テーブルでジャンプと、ジャンプ先の書き換えくらいは思いつくが、テーブルを拡張するという発想は無かった。Cプログラマから見て凄いと思うのが、設定ファイルの中に処理系が理解できるコードを書くと、文字列として受け取ってそのままeval出来ること。もちろん、加工してevalもできる。設定ファイルが簡易処理系になるんだ。こうやって、でぃえすえるって奴ができるのか。

SICPでも同じようなことやっているんだけど、SICPはどうしても処理系引きこもりになりがちだったのに対し、この本は操作の対象がディレクトリ、HTML、設定ファイルと実践的なのが良い。SICPで学んだ事をどう使うかって事が書いてある。

最初の50ページを読んで、絶賛ベタ褒め中。

|

« 今日の日記 | Main | 今日の日記 »

Comments

Thanks for your kind words. I am glad you like my book.

Posted by: Mark Dominus | 2007.11.12 11:25 PM

Thank you for your great book.
Everything in the book is interesting.

I hope we can read it in Japanese.

Posted by: Natsutan | 2007.11.13 07:39 AM

The comments to this entry are closed.

TrackBack


Listed below are links to weblogs that reference Higher-Order Perlは面白い!:

« 今日の日記 | Main | 今日の日記 »