Ответ на вопрос «почему порядок имеет значение в одной версии, а не в предыдущей»: оператор умного сопоставления был плохо спроектирован в 5.10.0 таким образом, что затруднял его надежное использование, и сделал данное / когдаконструкция менее полезна, чем могла бы быть, поэтому семантика была изменена в 5.10.1, и все будущие версии будут делать вид, что версия 5.10.0 никогда не существовала.
В версии Smart Match 5.10.1+,левый операнд и правый операнд ~~
всегда обрабатываются по-разному.Как и в случае с оператором сопоставления регулярных выражений =~
, левая сторона является «субъектом» сопоставления, а правая сторона - «шаблоном» для сопоставления - будь то простой скаляр, регулярное выражение, массив илиссылка на хеш, ссылка на код или что-то еще.Подробности подробно описаны в perlsyn.
Вам не стоит беспокоиться о версии 5.10.0, если вы уже не написали код, который зависит от семантики 5.10.0 (в этом случае вам следуетпереписать его, чтобы требовать 5.10.1, иначе он будет работать во всех будущих версиях perl).