Perl reduce() завершается с ошибкой -d:Profile

#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 .