Devel::DProfを使って簡単にプログラムの流れをつかむ
Devel::DProfを使うと簡単にプログラムの流れを把握出来ます。*1
例えばinc::Module::Installの初期化処理ってどんなんだろうと思ったら、
$ perl -d:DProf -Minc::Module::Install -e 'use inc::Module::Install'
ってやるとそのディレクトリにtmon.outってファイルが出来てます。
tmon.outを直接見ても良いのですが、きちんとこのprofileデータをparseするコマンドが付属しています。それがdprofppコマンドです。
下記のような使い方をすると流れがつかめていい感じかもです。
$ dprofpp -T | grep Module::Install | uniq inc::Module::Install::BEGIN Module::Install::BEGIN Module::Install::import Module::Install::new Module::Install::_caller Module::Install::autoload Module::Install::_caller Module::Install::preload Module::Install::load_extensions Module::Install::find_extensions Module::Install::__ANON__ Module::Install::Fetch::BEGIN Module::Install::Base::BEGIN Module::Install::Base::FakeAdmin::BEGIN Module::Install::Base::__ANON__ Module::Install::Fetch::BEGIN Module::Install::Base::new Module::Install::AutoInstall::BEGIN Module::Install::Base::BEGIN Module::Install::Base::FakeAdmin::BEGIN Module::Install::Base::__ANON__ Module::Install::AutoInstall::BEGIN Module::Install::Base::new Module::Install::WriteAll::BEGIN Module::Install::Base::new Module::Install::Metadata::BEGIN Module::Install::Base::new Module::Install::Makefile::BEGIN Module::Install::Base::new Module::Install::Win32::BEGIN Module::Install::Base::new Module::Install::Include::BEGIN Module::Install::Base::new Module::Install::Can::BEGIN Module::Install::Base::new Module::Install::_caller Module::Install::import Module::Install::new Module::Install::_caller Module::Install::autoload Module::Install::_caller Module::Install::preload Module::Install::load_extensions Module::Install::find_extensions Module::Install::__ANON__ Module::Install::Fetch::BEGIN Module::Install::Base::new Module::Install::AutoInstall::BEGIN Module::Install::Base::BEGIN Module::Install::Base::FakeAdmin::BEGIN Module::Install::Base::__ANON__ Module::Install::AutoInstall::BEGIN Module::Install::Base::new Module::Install::WriteAll::BEGIN Module::Install::Base::new Module::Install::Metadata::BEGIN Module::Install::Base::new Module::Install::Makefile::BEGIN Module::Install::Base::new Module::Install::Win32::BEGIN Module::Install::Base::new Module::Install::Include::BEGIN Module::Install::Base::new Module::Install::Can::BEGIN Module::Install::Base::new Module::Install::_caller
Catalystなんかもこれで追いかければ良かったなぁ。