Programación Web y Scripting => Perl => Mensaje iniciado por: explorer en Lunes 30 de Mayo de 2022, 13:51
Título: Perl v5.36, liberado
Publicado por: explorer en Lunes 30 de Mayo de 2022, 13:51
Ya tenemos nueva versión de Perl, la v5.36 (https://metacpan.org/release/RJBS/perl-5.36.0).
Perl 5.36.0 representa aproximadamente un año de desarrollo desde Perl 5.34.0 y contiene aproximadamente 250 000 líneas modificadas a lo largo de 200 archivos por parte de 82 autores.
Excluyendo los archivos autogenerados, documentación y herramientas de publicación, fueron aproximadamente 190 000 líneas modificadas en 1300 archivos .pm, .t, .c y .h.
Las novedades (https://metacpan.org/release/RJBS/perl-5.36.0/view/pod/perldelta.pod) que trae (entre otras):
Cambios principales
signatures deja de ser experimental (desde v5.20) y se activa por defecto
Pero algunos elementos de las firmas de subrutina aún quedan como experimentales.
isa considerado característica estable (desde v5.32), por lo que se activa por defecto. Consultar perlop.
se desactivan las características indirect y multidimensional. Ya no se puede escribir $x = new Class; ni $x = $hash{3,5,42}; Consultar feature.
la característica experimental switch (desde v5.10) se ha quitado de use v5.36. Se puede seguir usando (no recomendado), pero hay que activarla explícitamente.
nueva opción en línea de comandos, -g, es un alias de -0777. Consultar perlrun.
soporte para Unicode 14.0.
los "conjuntos regex" ya no se consideran experimentales (desde v5.18). Ejemplo: /(?[ ( \p{Thai} + \p{Lao} ) & \p{Digit} ])/ Esta expresión casa con dígitos que son tanto Thai como Laosianos. Consultar perlrecharclass.
los vistazos hacia atrás de longitud variable en patrones de exp. reg. ya no se consideran experimentales. Ahora, en "aaz"=~/(?=z)(?<=(a|aa))/, $1 contendrá "aa" (la coincidencia de mayor longitud).
seguimiento estable de los valores booleanos. Ahora, los valores booleanos resultado de expresiones como !!0 y !!1 así como los de los resultados de funciones y operadores incorporados, mantienen su naturaleza como valor booleano. Hay una nueva función, is_bool() que puede servir para comprobar si un valor es booleano.
(experimental) iterar sobre múltiples valores al mismo tiempo:
Código: Perl
formy($key,$value)(%hash){...}
formy($left,$right,$gripping)(@moties){...}
Consultar perlsyn.
(experimental) nuevo módulo builtin. Ofrece información y acceso a nuevas funciones o a las nuevas funciones incorporadas experimentales. Las de v5.36 son:
builtin::trim Elimina los espacios en blanco que haya al principio y final de la cadena de texto
builtin::indexed Devuelve una lista el doble de grande que la lista argumento, con cada elemento precedido por el índice de ese elemento. Esto es útil para recorrer arrays.
Código: Perl
use builtin 'indexed';
foreachmy($index,$val)(indexed @array){
builtin:true, builtin::false, builtin::is_bool Valores de verdad y función para comprobar si un valor es booleano.
builtin::weaken, builtin::unweaken, builtin::is_weak Cambio en el tratamiento de referencias a una variable, para ser eliminada o no por el recolector de basura.
builtin::blessed, builtin::refaddr, builtin::reftype Más información sobre referencias (incluso si no lo son).
builtin::ceil, builtin::floor Redondeo al entero igual o inferior, o al igual o superior del valor dado.
(experimental) bloques defer. Definen secciones de código que se ejecutarán durante la salida del ámbito en que se encuentren esos bloques.
Código: Perl
use feature 'defer';
{
say "This happens first";
defer {
say "This happens last";
}
say "And this happens inbetween";
}
(experimental) try/catch ahora tiene un bloque finally. Proporciona código que se ejecutará al final de la construcción.
(experimental) delimitadores no ASCII para entrecomillar. Ahora se podrá escribir $text = qw« hola adios »;
(experimental) @_ experimental en firmas de subrutinas. Ejemplo:
Código: Perl
use v5.36;
sub f ($x,$y=123){
say "The first argument is $_[0]";
}
provocará una advertencia.
Cambios incompatibles
un sort vacío (sin argumentos), ahora es un fallo en tiempo de compilación. @a = sort;
Obsolescencias
use VERSION (con VERSION inferior a 5.11) después de un use v5.11 (rebajar de versión), ahora es obsoleto. Ejemplo: