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ページを読んで、絶賛ベタ褒め中。
The comments to this entry are closed.
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