2017-02-24 1 views
5

私がアクセス/ perlのスクリプト内の変数が作成されたときにすべての場所を見たいと思っては/それは、tieまたはVariable::Magicどのようにperlスクリプトにすべての変数を結びつけるのですか?

を使用して簡単にアクセスできます。しかし、変数が作成されたときに自動的にこの魔法を適用する方法を

を破壊しましたか?

+0

これらをすべて連想配列に入れておき、その代わりにマジックがどこにあるかをあなたのコードで明確にすることができます。 – tadman

+0

変数はBEGIN段階では "_created_"です。だから私はこれらの方法でそれを追跡する方法を見ていない...? – zdim

+0

@zdim:私は以下を使うと思った: 'BEGIN {* CORE :: GLOBAL :: my = sub {apply_magic_to_new_variable(shift)}}'しかし、 'my'は裸の単語としてのみ呼ばれるかもしれない。このフックで新しい変数への参照を呼び出すと、非常に便利になります。 –

答えて

1

アプリケーションのすべての変数の相互参照リストを生成するB :: Xrefを見ることができます。基本的には、すべての変数の宣言/初期化を見つけるためにバイトコードを調べる必要があります。バイトコードを変更することもできます。つまり、変数を連結するコードを追加することができます。しかし、これはめったに行われないので、私はあなたに例を示すことはできません。

代わりに、コードフィルタを使用してtie()命令を追加することもできます。ただし、コードフィルタでは、変数の宣言/初期化を正しく識別することはできません。

関連する問題