He visto varios comentarios en la web. El operador de emparejamiento inteligente de Perl no funciona . Sé que originalmente era parte de Perl 6, luego se implementó en Perl 5.10 fuera de una versión anterior de la especificación, y luego se corrigió en 5.10.1 para que coincida con la especificación actual de Perl 6.
¿Se solucionó el problema en 5.10.1+, o hay otros problemas con el operador de emparejamiento inteligente que lo hacen problemático en la práctica?
¿Cuáles son los problemas?
¿Existe una versión aún más actualizada (Perl 6, tal vez) que solucione los problemas?
Editar: para aclarar, no estoy preguntando sobre errores, sino más bien la opinión de que el comportamiento previsto ~~
es malo.
Respuestas:
La gente a menudo confunde los problemas que surgen con el operador smartmatch con los que surgen con la
given/when
construcción, como el problema del léxico$_
.He llegado a la opinión de que si usa el operador smartmatch solo en literales, no se volverá loco. No puedo hacer promesas sobre ninguna otra situación. Tratar de descubrir qué
$a ~~ $b
está haciendo es suficiente para hacer que cualquier ser humano decente corra gritando de locura y tome otro lenguaje de programación por completo.O al menos, esa es la toma que recibí de Larry cuando estaba editando la sección de Smartmatch de la 4a edición de Programming Perl .
fuente
El operador de partido inteligente no estaba "roto" , pero tenía muchos errores. Perl v5.12 arregló eso, y Perl v5.14 lo perfeccionó en mi humilde opinión. Entonces, para responder a su pregunta, Perl v5.12 y superior soluciona este problema. Puede probarlo con versiones posteriores de Perl v5.10, pero sé que funciona mejor en Perl 5.12+.
Editar: para responder a su edición, vea este blog . Después de leer el artículo, creo que respondió suficientemente a su pregunta.
fuente