¿Por qué el módulo Switch está en desuso en Perl?

¿Por qué se desactivó el módulo Switch en Perl 5.12 ?

Sé que se hará un switch / case con elsif , pero no me gusta mucho.

Perl 5.10 introdujo un cambio real llamado dado-cuando

El antiguo Switch usaba filtrado de fuente y tenía otras limitaciones .

El Switch original usa un filtro de fuente para hacer su trabajo, y eso a menudo es una mala idea. Básicamente, preprocesa su fuente literal para crear un código nuevo antes de que perl lo compile. El módulo nunca fue realmente pensado para ser utilizado en gran medida, y fue más una prueba de concepto averiguar cómo podría ser una característica real de Perl.

Perl 5.10 agregó el constructo given-when para hacer lo que la mayoría de la gente quiere de un switch-case , pero lo hace un poco más. Learning Perl, 5th Edition le dedica un capítulo completo junto con una coincidencia inteligente. Sin embargo, en Learning Perl 7ma edición eliminamos ese capítulo ya que la comparación inteligente es experimental a partir de v5.18.

No se puede hacer un Perl given-when con las construcciones if-elsif-else . given-when permite ejecutar varios bloques y así como agregar código intersticial. Con if-elsif-else , ejecutas exactamente una twig.

En primer lugar, Switch no está en desuso. Su inclusión en el núcleo fue desaprobada en 5.12. Todo lo que eso significa es que, aunque Switch se incluyó con Perl 5.8 y 5.10, no está incluido en Perl 5.14 y posteriores. NO significa que la gente deba dejar de usar el módulo. El módulo aún puede instalarse desde CPAN por separado de perl .

Eso sí, muchos, incluso yo, aconsejamos a otros que eviten usar Switch, pero eso es independiente de su desaprobación del núcleo, y es muy anterior a 5.12. Usar Switch puede llevar a errores muy extraños y difíciles de depurar porque modifica su código antes de que Perl lo vea, todo mientras proporciona un beneficio mínimo, si es que tiene alguno.

Por esa razón, y dado que Perl comenzó a ofrecer una alternativa nativa ( givenwhen ), se decidió que Switch ya no se incluiría con perl .

Desafortunadamente, givenwhen tiene problemas, y se marcó retroactivamente como experimental en 5.18. No es seguro usarlos, ya que se cambiarán de una manera incompatible (o tal vez eliminada) en el futuro.

Intereting Posts