Я видел множество комментариев по всему интернету. Оператор умного матча Perl не работает . Я знаю, что изначально он был частью Perl 6, затем был реализован в Perl 5.10 по сравнению со старой версией спецификации, а затем был исправлен в 5.10.1 для соответствия текущей спецификации Perl 6.
Устранена ли проблема в 5.10.1+ или есть другие проблемы с оператором smart-match, которые делают его проблематичным на практике?
Какие проблемы?
Существует ли еще более обновленная версия (возможно, Perl 6), которая устраняет проблемы?
Изменить: Чтобы уточнить, я не спрашиваю об ошибках, а скорее мнение, что предполагаемое поведение ~~
является плохим.
Ответы:
Люди часто путают проблемы, возникающие с оператором smartmatch, с проблемами, возникающими с
given/when
конструкцией, например, проблема лексики$_
.Я пришел к мнению, что если вы используете оператор smartmatch только для литералов, то вы не сойдете с ума. Я не могу дать никаких обещаний о любой другой ситуации. Попытки выяснить, что
$a ~~ $b
делает, достаточно, чтобы заставить любого порядочного человека начать кричать в безумии и вообще взять другой язык программирования.Или, по крайней мере, это то, что я получил от Ларри, когда он редактировал раздел smartmatch 4-го издания Programming Perl .
источник
Оператор умного матча не был «сломан» , но в нем было много ошибок. Perl v5.12 исправил это, а Perl v5.14 усовершенствовал его ИМХО. Итак, чтобы ответить на ваш вопрос, Perl v5.12 и выше исправляет эту проблему. Вы можете попробовать это с более поздними версиями Perl v5.10, но я знаю, что это работает лучше в Perl 5.12+.
Редактировать: чтобы ответить на ваши изменения, смотрите этот блог . Прочитав статью, я считаю, что она достаточно ответила на ваш вопрос.
источник