#perl #debugging #profiling
#perl #отладка #профилирование
Вопрос:
Функция reduce()
не работает должным образом в -d:Profile . Это известная ошибка? Если да, то как мне профилировать программу, содержащую эту функцию? Если нет, куда мне сообщить об ошибке?
Рабочий пример: файл bad.pl
содержит
use warnings;
use List::Util qw/reduce/;
print reduce { $a $b } (1, 2);
Затем, запустив его, я получаю:
C:Test>perl bad.pl
3
C:Test>perl -d:Profile bad.pl
Use of uninitialized value $b in addition ( ) at bad.pl line 5.
Use of uninitialized value $a in addition ( ) at bad.pl line 5.
0
Я получил те же результаты в Windows под Strawberry Perl и в CentOS.
Комментарии:
1. Devel::NYTProf был рекомендован вместо Devel::Profile столько, сколько я помню.
2. Я также предлагаю переключиться на Devel::NYTProf , но обходным путем может быть что-то вроде
use if $INC{'Devel/Profile.pm'}, 'List::Util' => qw(reduce); BEGIN { *reduce = sub (amp;@) {...} unless __PACKAGE__->can('reduce') };
обеспечения чистойreduce
реализации Perl при запуске под Devel::Profile .