Entering Passive Mode

2006-05 - カテゴリ 'Perl' の記事

取りあえず完成

さて、今日で完成としよう。

必要な機能は、引数無しで指定した場合、
自動的にシンボルテーブルのメソッドを調べることだ。

ただ、モジュールが use された直後ではまずい。
use は、暗黙的に BEGIN ブロックで実行されるため、
定義されているメソッドが読み込まれる前に実行される。

そのため import 内で対象のシンボルテーブルを検索しても、
シンボルテーブルにはまだメソッドが定義されていない。
対策として、import ではパッケージ名だけ記憶しておき、
シンボルテーブルの検索は後で行えばよい。

シンボルの列挙

では、シンボルテーブルからコードを検索してみよう。
例えば、Carp のシンボルテーブルを調べてみる。

    use Carp;

まずはシンボルテーブルを取得する。

    my $package = 'Carp';
    no strict 'refs';
    my $symbol_table = \%{"${package}::"};
    use strict 'refs';

このページのトップへ戻る
© 2008 Project Loafer/Project Fireball and all blog writers. Powered by Nucleus CMS