J'ai vu un certain nombre de commentaires sur le Web. L'opérateur de correspondance intelligente de Perl est rompu . Je sais qu'il faisait à l'origine partie de Perl 6, puis a été implémenté en Perl 5.10 à partir d'une ancienne version de la spécification, puis a été corrigé en 5.10.1 pour correspondre à la spécification Perl 6 actuelle.
Le problème est-il résolu dans 5.10.1+, ou y a-t-il d'autres problèmes avec l'opérateur de correspondance intelligente qui le rendent problématique dans la pratique?
Quels sont les problèmes?
Existe-t-il une version encore plus mise à jour (Perl 6, peut-être) qui résout les problèmes?
Edit: Pour clarifier, je ne pose pas de questions sur les bugs, mais plutôt sur l'opinion selon laquelle le comportement prévu de ~~
est mauvais.
Réponses:
Les gens confondent souvent les problèmes qui surviennent avec l'opérateur smartmatch avec ceux qui surviennent avec la
given/when
construction, comme le problème lexical$_
.Je suis venu à l'idée que si vous n'utilisez l'opérateur smartmatch que sur des littéraux, vous ne deviendrez pas fou. Je ne peux faire aucune promesse concernant une autre situation. Essayer de comprendre ce qui
$a ~~ $b
est en train de faire suffit à conduire n'importe quel être humain décent à courir en hurlant de folie et à adopter un autre langage de programmation.Ou du moins, c'est le point de vue que j'ai obtenu de Larry quand il éditait la section smartmatch de la 4ème édition de Programming Perl .
la source
L'opérateur de match intelligent n'était pas "cassé" , mais il y avait beaucoup de bugs. Perl v5.12 a corrigé cela, et Perl v5.14 l'a perfectionné à mon humble avis. Donc, pour répondre à votre question, Perl v5.12 et plus résout ce problème. Vous pouvez l'essayer avec des versions ultérieures de Perl v5.10, mais je sais que cela fonctionne mieux dans Perl 5.12+.
Modifier: pour répondre à votre modification, consultez ce blog . Après avoir lu l'article, je pense qu'il a suffisamment répondu à votre question.
la source