Альтернативное решение, использующее уже упомянутый Devel :: NYTProf (профилировщик вместо отладчика, если быть более точным), которое не требует написания дополнительного кода и дает вамнамного больше информации.
% perl -d:NYTProf yourscript.pl
По умолчанию будет создан файл nytprof.out
.Затем вы можете сделать:
% nytprofcalls nytprof.out
, что даст вам подробную информацию о вызове.Пример сценария:
use strict;
sub f1 {
print "hi;\n";
f2();
}
sub f2 {
print "hi2\n";
}
f1();
и пример вывода:
main::f1;main::f2 30
main::f1;main::CORE:print 124
main::f1;main::f2;main::CORE:print 40
main::BEGIN@1 4262
main::f1 113
main::BEGIN@1;strict::import 39
main::BEGIN@1;strict::BEGIN@7 396
main::BEGIN@1;strict::BEGIN@7;strict::CORE:match 58
Вы можете видеть, что NYTProf также перечисляет вызовы основной функции (CORE :: print), среди прочего.
В качестве бонуса вы можете просмотреть весь вывод профиля, используя:
% nytprofhtml
, затем откройте страницу отчета, например, используя:
% firefox nytprof/index.html
Вы можете увидеть подпрограммы, которыебыли казнены (приказано, как долго они бегут), сколько раз они были запущены, и многое другое.