5
私がアクセス/ perlのスクリプト内の変数が作成されたときにすべての場所を見たいと思っては/それは、tie
またはVariable::Magic
どのようにperlスクリプトにすべての変数を結びつけるのですか?
を使用して簡単にアクセスできます。しかし、変数が作成されたときに自動的にこの魔法を適用する方法を
を破壊しましたか?
私がアクセス/ perlのスクリプト内の変数が作成されたときにすべての場所を見たいと思っては/それは、tie
またはVariable::Magic
どのようにperlスクリプトにすべての変数を結びつけるのですか?
を使用して簡単にアクセスできます。しかし、変数が作成されたときに自動的にこの魔法を適用する方法を
を破壊しましたか?
アプリケーションのすべての変数の相互参照リストを生成するB :: Xrefを見ることができます。基本的には、すべての変数の宣言/初期化を見つけるためにバイトコードを調べる必要があります。バイトコードを変更することもできます。つまり、変数を連結するコードを追加することができます。しかし、これはめったに行われないので、私はあなたに例を示すことはできません。
代わりに、コードフィルタを使用してtie()命令を追加することもできます。ただし、コードフィルタでは、変数の宣言/初期化を正しく識別することはできません。
これらをすべて連想配列に入れておき、その代わりにマジックがどこにあるかをあなたのコードで明確にすることができます。 – tadman
変数はBEGIN段階では "_created_"です。だから私はこれらの方法でそれを追跡する方法を見ていない...? – zdim
@zdim:私は以下を使うと思った: 'BEGIN {* CORE :: GLOBAL :: my = sub {apply_magic_to_new_variable(shift)}}'しかし、 'my'は裸の単語としてのみ呼ばれるかもしれない。このフックで新しい変数への参照を呼び出すと、非常に便利になります。 –