Perl


FrontPage

ActiveState?: Windowsで動作するPerlを無料で配布。開発環境(IDE)は有料らしい。 http://www.activestate.com/

  • LWP
  • sqlite
  • YAML
  • JSON
  • Tokyo Cabinet

Trace

関数呼び出しのトレースを取りたい場合,

  • perlでもクラスにデストラクタをつけられる.
package trace;
# コンストラクタ
sub new {
   my $this = shift;
   my ( $func, $parm ) = @_ ;
   my $trace = {"func" => $func ,
       "parm" => $parm ,
       "caller" => $previous } ;
   print "trace $func $parm\n";
   bless $trace, $this;
   return $trace ;
}
# デストラクタ
sub DESTROY{
   my $this = shift;
   my $func = $this->{"func"};
   print "$func return \n";
}
1;

こう使う

sub test {
   my $t = new trace "test", "@_";    
   my ($t, $t2) = @_;
   print "   test $t, $t2 \n";
}

なお,呼び出し元を特定するところ($previous)はまだ作っていない.

  • Hook::LexWrap?という関数の前後にhookする手段もある.

http://cast-a-spell.at.webry.info/200711/article_26.html