Domingo 8 de Septiembre de 2024, 01:50
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación Web y Scripting
»
Perl
»
Perl v5.40
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Perl v5.40 (Leído 972 veces)
explorer
Miembro activo
Mensajes: 69
Perl v5.40
«
en:
Martes 11 de Junio de 2024, 11:59 »
0
Estos son los cambios que trae
la versión v5.40.0
, del 9 de junio de 2024.
Perl 5.40.0 representa aproximadamente 11 meses de desarrollo desde Perl 5.38.0 y contiene aproximadamente 160 000 líneas modificadas a lo largo de 1500 archivos por parte de 75 autores.
Las
novedades
que trae (entre otras):
Cambios principales
Nuevo identificador
__CLASS__
Ahora, cuando se usa la característica
class
, en el código de un método, bloque
ADJUST
o expresión de inicialización de un campo, se permite usar el nuevo identificador
__CLASS__
. Éste devuelve el nombre de una clase, de forma similar a
__PACKAGE__
, pero mientras que este último da el nombre del paquete del código en tiempo de compilación, el identificador
__CLASS__
tiene en cuenta la clase a la que pertenece la instancia del objeto, en tiempo de ejecución. Esto es útil para el despachado de métodos de esa clase, especialmente en los constructores, donde no se permite el acceso a
$self
.
Para más información, consultar "__CLASS__" en perlfunc.
Atributo
:reader
para las variables
field
Mientras se usa la característica
class
, las variables
field
pueden tener un atributo
:reader
. Esto solicita que se cree un método de acceso de forma automática que simplemente retorne el valor de la variable
field
, desde la instancia indicada.
Código: Perl
field
$nombre
:
reader
;
Es equivalente a
Código: Perl
field
$nombre
;
method nombre
(
)
{
return
$nombre
;
}
Se puede proporcionar un nombre alternativo:
Código: Perl
field
$nombre
:
reader
(
obtener_nombre
)
;
Para más detalles ver ":reader" en perlclass.
Se permite un espacio en la opción de línea de comandos
-M
Cuando se procesan las opciones en la línea de comandos, perl ahora permite un espacio entre la opción
-M
y el nombre del módulo que le sigue.
Código:
[Seleccionar]
$ perl -M Data::Dumper=Dumper -E 'say Dumper [1,2,3]'
Esto coincide con el comportamiento actual de la opción
-I
.
Restricciones en las declaraciones de
use VERSIÓN
En Perl v5.36 se añadió una advertencia de obsolescencia cuando se degrada una declaración
use VERSIÓN
desde una que esté por encima de la versión 5.11, hacia abajo. Ahora esto se ha convertido en un error fatal.
Adicionalmente, ahora es un error fatal una posterior declaración
use VERSIÓN
cuando exista otra en el mismo ámbito, si es una versión 5.39 o superior. Esto es para evitar complicaciones a las funciones léxicas importadas desde
builtin
. También se añadió una advertencia de obsolescencia para cualquier otra declaración posterior de
use VERSION
que esté por debajo de la versión 5.39, para avisar que ya no se permitirá en la Perl versión 5.44.
Nuevas funciones experimentales
builtin::inf
y
builtin::nan
Se han añadido dos nuevas funciones,
inf
y
nan
, al espacio de nombres
builtin
. Actúan como constantes que devuelven los valores en punto flotante infinito y Not-a-Number (No es-un-Número), respectivamente.
Nuevo operador xor lógico
^^
Perl siempre ha tenido tres operadores lógicos de baja precedencia:
and
,
or
y
xor
, así como tres versiones binarias de alta precedencia:
&
,
|
y
^
. Hasta esta versión, mientras que también estaban presentes los operadores lógicos de media precedencia
&&
y
||
, no existía un equivalente a or-exclusivo. Esta versión de Perl añade el último operador
^^
, completando el conjunto.
Código: Perl
$x
^^
$y
and
say
"Uno de x o y es verdadero, pero no ambos"
;
La característica
try/catch
ya no es experimental
Antes de esta versión, la característica
try/catch
para el manejo de errores estaba considerada como experimental. Presentada en Perl versión 5.34.0, se considero que era una característica estable del lenguaje y su uso ya no imprimía una advertencia. Se debe seguir activando con la
feature
'try'.
Ver "Manejo de excepciones con Try y Catch" en perlsyn.
Iterar múltiples valores con
for
al mismo tiempo ya no es experimental
Antes de esta versión, iterar sobre múltiples valores al mismo tiempo se consideró experimental. Presentada en Perl versión 5.36.0, ahora se considera una característica estable del lenguaje y su uso ya no imprime una advertencia. Ver "Sentencias compuestas" en perlsyn.
El módulo
builtin
ya no es experimental
Antes de esta versión, el módulo
builtin
y todas sus funciones se consideraban experimentales. Presentadas en Perl versión 5.36.0, este módulo se considera ahora estable y su uso ya no imprime una advertencia. Sin embargo, muchas de sus funciones se siguen considerando experimentales.
La
feature
empaquetada
:5.40
añade
try
La última versión de la
feature
empaquetada contiene ahora la reciente característica estable
try
. Ya que esta característica empaquetada se usa por la opción
-E
de línea de comandos, está disponible inmediatamente para los
scripts
-E
.
use v5.40;
importa las funciones
builtin
Además de la característica empaquetada de
feature
,
use v5.40;
(o siguientes versiones) importa la correspondiente versión de
builtin
empaquetada.
Cambios incompatibles
reset EXPRESIÓN
ahora llama a set-magic en escalares
Lo hacía con arrays y hashes, pero no con escalares.
Llamar a un método
import
de un paquete desconocido produce una advertencia
Ahora, llamar a un código como este genera una advertencia:
[perl] Clase::Que::No::Existe->import("foo");[/perl]
return
ya no permite un objeto indirecto
La sintasix del operador return ahora rechaza los objetos indirectos. En la mayor parte de los casos compilaría e incluso se ejecutaría, pero no estaba documentado y podía producir resultados confusos, por ejemplo:
Código: Perl
# note que "sum" no está definido
sub
sum_positive
{
return
sum
grep
$_
>
0
,
@_
;
# interpretado inesperadamente como:
# return *sum, grep $_ > 0, @_;
# ... con la palabra suelta actuando como un argumento extra de tipo typeglob
}
say
for
sum_positive
(
-
1
,
2
,
3
)
;
producía:
Código:
[Seleccionar]
*main::sum
2
3
Las clases literales ya no se resuelven como manejadores de archivo, en llamadas de método bajo
no feature "bareword_filehandles"
Había un error con la ejecución de
no feature "bareword_filehandles"
. Se permitía hacer esto:
Código: Perl
open
FH
,
"<"
,
$archivo
or
die
;
no
feature
'bareword_filehandles'
;
FH
->
binmode
;
Ahora,
FH->binmode
intentará resolver
FH
como una clase, resultando típicamente en un error en tiempo de ejecución.
Obsolescencias
Usar
goto
para saltar desde un ámbito externo a un ámbito interno es obsoleto y se eliminará completamente en Perl v5.42
Nuevas plataformas
Serenity OS
Tweet
«
última modificación: Martes 11 de Junio de 2024, 12:07 por explorer
»
J
F
^
D
Perl programming
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación Web y Scripting
»
Perl
»
Perl v5.40