Прототипы в Perl плохие новости . Они ужасно сломаны. На самом деле, они работают отлично, но наш простой смертный мозг не может рассмотреть всю глубину прототипов Perl.
Предполагается, что они позволяют вам вызывать пользовательскую функцию, как если бы она была встроенной функцией, но то, как они работают, крайне запутанно. См. Perldoc persub о том, как они работают (и не работают).
Некоторое время происходило движение по удалению скобок из вызовов функций Perl, и я думаю, что в некоторых обстоятельствах удаление лишних скобок может сделать код немного читабельнее. Однако это крошечное улучшение недостаточно велико, чтобы преодолеть ловушки прототипирования.
Вы определенно смотрите на пределы прототипирования. На самом деле, ваш код на самом деле довольно запутанный, и добавление скобок улучшило бы его читабельность. Да, я знаю, что это не твоя цель. Ваша цель - рассмотреть прототипирование Perl, пока вы не станете единым целым с Ларри Уоллом. Я ценю ваше мужество. Я экспериментировал с прототипами, пока не заплакал в спальню, не захлопнул дверь и не отказывался выходить до ужина. Потребовались годы психотерапии и пьянства, чтобы преодолеть мой опыт прототипирования в Perl. Даже сегодня я буду безудержно плакать, когда увижу \@@
.
Предполагается, что Perl 6 сделает все лучше. К сожалению, Perl 6 находится в разработке дольше, чем Duke Nukem Forever .
Небольшое преувеличение. Duke Nukem был фактически анонсирован в 1997 году, в то время как Perl 6 был объявлен в 2000 году, так что у Duke Nukem на Perl 6 было около трех лет. что Perl 6 имеет.
Хорошо, хватит хватать. Возможно, вам лучше обратиться за помощью к сайту Perlmonks . Вот где тусуются Perl-гуру. Вероятно, они могут объяснить все, что происходит с вашей программой, и почему она делает все правильно.
Дэвид Вайнтрауб
perl -e 'print "Еще один второсортный Perl-хакер \ n";'
ДОПОЛНЕНИЕ
Похоже, гораздо больше, чем все, что вы когда-либо хотели знать о прототипах в Perl было перемещено в Perl Monks . Это статья, которая объяснит, почему ваши прототипы ведут себя , как и ожидалось .