InglésFrancésEspañol

icono de página de OnWorks

perl5200delta - Online en la nube

Ejecute perl5200delta en el proveedor de alojamiento gratuito de OnWorks sobre Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS

Este es el comando perl5200delta que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.

PROGRAMA:

NOMBRE


perl5200delta: novedades de perl v5.20.0

DESCRIPCIÓN


Este documento describe las diferencias entre la versión 5.18.0 y la versión 5.20.0.

Si está actualizando desde una versión anterior como 5.16.0, primero lea perl5180delta,
que describe las diferencias entre 5.16.0 y 5.18.0.

Core Complementos


Emparejamiento Subrutina firmas
Sintaxis declarativa para desenvolver la lista de argumentos en variables léxicas. "sub foo ($ a, $ b)
{...} "comprueba el número de argumentos y coloca los argumentos en variables léxicas.
Las firmas no son equivalentes al idioma existente de "sub foo {my ($ a, $ b) = @_; ...}".
Las firmas solo están disponibles al habilitar una función no predeterminada y generar advertencias
sobre ser experimental. El choque sintáctico con los prototipos se gestiona desactivando el
sintaxis de prototipo breve cuando las firmas están habilitadas.

Consulte "Firmas" en perlsub para obtener más detalles.

"sub" s now take a "prototipo" atributo
Al declarar o definir un "sub", el prototipo ahora se puede especificar dentro de un
atributo "prototipo" en lugar de en parens después del nombre.

Por ejemplo, "sub foo ($$) {}" podría reescribirse como "sub foo: prototype ($$) {}".

Más consistente prototipo Analizando
Los puntos y comas múltiples en los prototipos de subrutinas han sido tolerados y tratados como un
punto y coma simple. Hubo un caso en el que esto no sucedió. Una subrutina cuya
el prototipo comienza con "*" o "; *" puede afectar si una palabra simple se considera un método
nombre o sub llamada. Esto ahora se aplica también a ";;; *".

Los espacios en blanco se han permitido durante mucho tiempo dentro de los prototipos de subrutinas, por lo que "sub ($ $)" es
equivalente a "sub ($$)", pero hasta ahora se eliminó cuando se analizó la subrutina.
Por lo tanto, el espacio en blanco era no permitido en prototipos establecidos por "Scalar :: Util :: set_prototype". Ahora
está permitido y el analizador ya no elimina los espacios en blanco. Esto significa "prototipo
& mysub "devuelve el prototipo original, espacios en blanco y todo.

"rand" now usos a consistente azar número generador
Anteriormente, perl usaba un generador de números aleatorios específico de la plataforma, que variaba entre
libc rand (), aleatorio() or drand48 ().

Esto significaba que la calidad de los números aleatorios de perl variaría de una plataforma a otra,
de los 15 bits de rand () en Windows a 48 bits en plataformas POSIX como Linux con
drand48 ().

Perl ahora usa su propio drand48 () implementación en todas las plataformas. Esto no lo hace
hacer que el "rand" de perl sea criptográficamente seguro. [perl # 115928]

Nuevo rebanada sintaxis
La nueva sintaxis de% hash {...} y% array [...] devuelve una lista de clave / valor (o índice / valor)
pares. Consulte "Rebanadas de hash de clave / valor" en perldata.

Emparejamiento Sufijo Desreferenciar
Cuando la función "postderef" está en vigor, se establecen las siguientes equivalencias sintácticas
arriba:

$ sref -> $ *; # lo mismo que $ {$ sref} # interpola
$ aref -> @ *; # igual que @ {$ aref} # interpola
$ href ->% *; # igual que% {$ href}
$ cref -> & *; # igual que & {$ cref}
$ gref -> **; # igual que * {$ gref}

$ aref -> $ # *; # igual que $ # {$ aref}

$ gref -> * {$ ranura}; # igual que * {$ gref} {$ slot}

$ aref -> @ [...]; # igual que @ $ aref [...] # interpola
$ href -> @ {...}; # igual que @ $ href {...} # interpola
$ aref ->% [...]; # igual que% $ aref [...]
$ href ->% {...}; # igual que% $ href {...}

Aquellos marcados como interpolantes solo interpolan si la característica asociada "postderef_qq" es
también habilitado. Esta característica es experimental y disparará
Advertencias de categoría "experimental :: postderef" cuando se usan, a menos que estén suprimidas.

Para obtener más información, consulte la sección Sintaxis de desreferencia de postfijos de perlref.

Unicode 6.3 now apoyadas
Perl ahora es compatible y se envía con Unicode 6.3 (aunque Perl puede recompilarse con cualquier
versión anterior de Unicode también). Una lista detallada de los cambios de Unicode 6.3 está en
<http://www.unicode.org/versions/Unicode6.3.0/>.

Nuevo "\ p {Unicode}" regular expresión patrón perfecta
Este es un sinónimo de "\ p {Any}" y coincide con el conjunto de puntos de código definidos por Unicode 0 -
0x10FFFF.

Superior 64 bits SOPORTE
En plataformas de 64 bits, las funciones internas de la matriz ahora usan compensaciones de 64 bits, lo que permite a Perl
matrices para contener más de 2 ** 31 elementos, si tiene la memoria disponible.

El motor de expresiones regulares ahora admite cadenas de más de 2 ** 31 caracteres. [perl
# 112790, # 116907]

Las funciones PerlIO_get_bufsiz, PerlIO_get_cnt, PerlIO_set_cnt y PerlIO_set_ptrcnt ahora
tienen SSize_t, en lugar de int, valores de retorno y parámetros.

"usar lugar" now funciona on UTF-8 locales
Hasta esta versión, solo se admitían configuraciones regionales de un solo byte, como la serie ISO 8859.
Ahora, las configuraciones regionales UTF-8 multibyte cada vez más comunes también son compatibles. Una configuración regional UTF-8
es uno en el que el juego de caracteres es Unicode y la codificación es UTF-8. El POSIX
Operaciones de categoría "LC_CTYPE" (cambio de mayúsculas y minúsculas (como "lc ()", "\ U") y carácter
clasificación ("\ w", "\ D", "qr / [[: punct:]] /")) bajo tal locale funciona como si no
en la configuración regional, pero en cambio como si estuviera en "use feature 'unicode_strings'", excepto las reglas de taint
son seguidos. La clasificación permanece por orden de puntos de código en esta versión. [perl # 56820].

"usar lugar" now compila on sistemas sin local capacidad o permiso (ability
Al hacer esto anteriormente, el programa no se compilaba. Dentro de su alcance el programa
se comporta como si estuviera en la configuración regional "C". Por lo tanto, los programas escritos para plataformas que admiten configuraciones regionales
se puede ejecutar en plataformas sin configuración regional sin cambios. Intenta cambiar la configuración regional fuera de
la configuración regional "C", por supuesto, fallará.

Más local inicialización de repliegue opciones
Si hubo un error con las configuraciones regionales durante el inicio de Perl, inmediatamente se rindió e intentó
para utilizar la configuración regional "C". Ahora primero intenta usar otras configuraciones regionales proporcionadas por el entorno.
variables, como se detalla en "MEDIO AMBIENTE" en perllocale. Por ejemplo, si "LC_ALL" y
"LANG" están configurados, y el uso de la configuración regional "LC_ALL" falla, Perl ahora probará el "LANG"
locale, y solo si eso falla, volverá a "C". En máquinas con Windows, Perl
intente, antes de usar "C", la configuración regional predeterminada del sistema si todas las configuraciones regionales proporcionadas por el entorno
las variables fallan.

"-DL" tiempo de ejecución opción now adicional for rastreo local pólipo
Esto está diseñado para que los desarrolladores del núcleo de Perl ayuden a depurar errores de campo relacionados con
local.

-F now implica -a -a implica -n
Previamente -F sin -a fue una operación no operativa, y -a sin -n or -p fue un no-op, con esto
cambiar, si suministra -F entonces ambos -a -n están implícitos y si suministra -a then -n is
implícito.

Todavía puedes usar -p por su comportamiento extra. [perl # 116190]

$a $b advertencias exención
Las variables especiales $ ay $ b, que se utilizan en "ordenar", ahora están exentas de las advertencias de "utilizado una vez",
incluso cuando no se utiliza "sort". Esto facilita que los módulos CPAN proporcionen funciones
usando $ ay $ b para propósitos similares. [perl # 120462]

Seguridad


Evitando posible read of libre()d memoria during Analizando
Era posible que libre()d la memoria se puede leer durante el análisis en el inusual
circunstancia del programa Perl que termina con un heredoc y la última línea del archivo en
disco que no tiene carácter de nueva línea de terminación. Esto ahora ha sido arreglado.

Incompatible Cambios


"hacer" can no longer be usado a llamar al subrutinas
El formulario "do SUBROUTINE (LIST)" ha dado como resultado una advertencia de obsolescencia desde Perl v5.0.0,
y ahora es un error de sintaxis.

Como una cita escapar cambios
El carácter después de "\ c" en una cadena entre comillas dobles ("..." o qq (...)) o regular
La expresión ahora debe ser un carácter imprimible y no puede ser "{".

Un literal "{" después de "\ B" o "\ b" ahora es fatal.

Estos fueron obsoletos en perl v5.14.0.

Contaminación que sucede bajo más circunstancias; now se ajusta a documentación
Esto afecta la coincidencia de expresiones regulares y el cambio de mayúsculas y minúsculas de una cadena ("lc", "\ U",
etc..) dentro del alcance de "use locale". El resultado ahora está contaminado según la operación,
independientemente del contenido de la cadena, ya que la documentación (perlsec, "SEGURIDAD"
en perllocale) indica que debería. Previamente, para la operación de cambio de caso, si el
La cadena no contenía caracteres cuyo cambio de mayúsculas y minúsculas pudiera verse afectado por la configuración regional,
el resultado no estaría contaminado. Por ejemplo, el resultado de "uc ()" en una cadena vacía o una
que contiene solo puntos de código por encima de Latin1 ahora está contaminado, y no lo estaba antes. Esto lleva a
resultados de contaminación más consistentes. Los patrones de expresión regular contaminan sus no binarios
resultados (como $ &, $ 2) si y solo si el patrón contiene elementos cuya coincidencia depende
en la ubicación actual (potencialmente contaminada). Al igual que las funciones de cambio de caja, la
el contenido de la cadena que se empareja ahora no importa, mientras que antes sí. Para
Por ejemplo, si el patrón contiene una "\ w", los resultados se verán afectados incluso si la coincidencia lo hizo.
no tener que usar esa parte del patrón para tener éxito o fallar, porque qué "\ w"
las coincidencias dependen de la configuración regional. Sin embargo, por ejemplo, un "." en un patrón no habilitará
mancha, porque el punto coincide con cualquier carácter individual, y cuál es la configuración regional actual
no cambia de ninguna manera lo que coincide y lo que no.

"\pag{}", "\PAG{}" pareo tiene cambiado for no unicode código puntos.
"\ p {}" y "\ P {}" están definidos por Unicode solo en puntos de código definidos por Unicode ("U + 0000"
a través de "U + 10FFFF"). Su comportamiento al hacer coincidir estos puntos de código Unicode legales es
sin cambios, pero hay cambios para los puntos de código 0x110000 y superiores. Previamente, Perl
trató el resultado de hacer coincidir "\ p {}" y "\ P {}" con estos como "indef", que
se traduce en "falso". Para "\ P {}", esto se complementó luego en "verdadero". Una advertencia
se suponía que iba a ser criado cuando esto sucedió. Sin embargo, varias optimizaciones
prevenir la advertencia, y los resultados a menudo eran contrarios a la intuición, con una coincidencia y
su aparente complemento es falso. Ahora todos los puntos de código que no son Unicode se tratan como
puntos de código Unicode típicos no asignados. Por lo general, esto es más "Do-What-I-Mean". Una advertencia
se genera solo si los resultados son posiblemente diferentes de un enfoque Unicode estricto, y
de lo que solía hacer Perl. El código que debe ser estrictamente compatible con Unicode puede hacer que esto
advertencia fatal, y luego Perl siempre lanza la advertencia.

Los detalles se encuentran en "Más allá de los puntos de código Unicode" en perlunicode.

"\féretro}" tiene been expandido a partido all posible código puntos
El elemento de patrón de expresión regular definido por Perl "\ p {All}", no utilizado en CPAN, utilizado para
coincidir solo con los puntos de código Unicode; ahora coincide con todos los puntos de código posibles; eso es
es equivalente a "qr /./ s". Por tanto, "\ p {Todos}" ya no es sinónimo de "\ p {Cualquiera}", que
continúa coincidiendo solo con los puntos de código Unicode, como Unicode dice que debería hacerlo.

Datos :: Dumper's salida pueden el cambio
Dependiendo de las estructuras de datos volcadas y la configuración establecida para Data :: Dumper, el volcado
la salida puede haber cambiado con respecto a versiones anteriores.

Si tiene pruebas que dependen de la salida exacta de Data :: Dumper, pueden fallar.

Para evitar este problema en su código, pruebe con la estructura de datos al evaluar el
estructura de dumping, en lugar del vertedero en sí.

Lugar decimal punto personaje no longer fugas outside of "usar lugar" alcance
Esto es en realidad una corrección de errores, pero algunos códigos han llegado a depender de que el error esté presente, por lo que
este cambio se enumera aquí. La configuración regional actual en la que se ejecuta el programa no es
se supone que es visible para el código Perl excepto dentro del alcance de un "uso local". Sin embargo,
Hasta ahora, en determinadas circunstancias, el carácter utilizado para un punto decimal (a menudo un
coma) se filtró fuera del alcance. Si su código se ve afectado por este cambio, simplemente agregue un
"use locale".

Asignaciones of Windows tomas error los códigos de a $! now preferir errno.h valores sobre
WSAGetLastError () valores
En versiones anteriores de Perl, Windows sockets códigos de error devueltos por WSAGetLastError ()
fueron asignados a $! y algunas constantes como ECONNABORTED, no en errno.h en VC ++ (o
los diversos puertos de Windows de gcc) se definieron a los valores WSAE * correspondientes para permitir $!
para ser probado contra las constantes E * exportadas por Errno y POSIX.

Esto funcionó bien hasta VC ++ 2010 y posteriores, que introdujo nuevas constantes E * con valores
> 100 en errno.h, incluyendo algunos siendo (re) definidos por perl a valores WSAE *. Eso causo
problemas al vincular el código XS con otras bibliotecas que usaban las definiciones originales
of errno.h constantes.

Para evitar esta incompatibilidad, perl ahora asigna códigos de error WSAE * a valores E * donde
posible, y asigna esos valores a $ !. Las constantes E * exportadas por Errno y POSIX
se actualizan para que coincidan de modo que testing $! contra ellos, siempre que sea posible previamente,
continúan funcionando como se esperaba, y todas las constantes E * encontradas en errno.h ahora se exportan desde
esos módulos con su original errno.h valores.

Para evitar roturas en el código Perl existente que asigna valores WSAE * a $ !, perl
ahora intercepta la asignación y realiza el mismo mapeo a los valores E * que usa
internamente al asignar a $! sí mismo.

Sin embargo, queda una incompatibilidad con versiones anteriores: el código Perl existente que compara $!
contra los valores numéricos de los códigos de error WSAE * que se asignaron previamente a $!
ahora se romperá en aquellos casos en los que se haya asignado un valor E * correspondiente
en lugar de. Esto es solo un problema para aquellos valores E * <100, que siempre se exportaron desde
Errno y POSIX con su original errno.h valores y, por lo tanto, no se puede utilizar para
Pruebas de código de error WSAE * (por ejemplo, WSAEINVAL es 10022, pero el EINVAL correspondiente es 22). (MI*
valores> 100, si están presentes, se redefinieron a valores WSAE * de todos modos, por lo que la compatibilidad se puede
logrado mediante el uso de las constantes E *, que funcionarán tanto antes como después de este cambio,
aunque usando diferentes valores numéricos bajo el capó).

Funciones "PerlIO_vsprintf" "PerlIO_sprintf" have been remoto
Estas dos funciones, indocumentadas, no utilizadas en CPAN y problemáticas, se han eliminado.

Desaprobaciones


El proyecto "/\C/" personaje clase
La clase de caracteres de expresión regular "/ \ C /" está obsoleta. Desde perl 5.22 en adelante
generará una advertencia, y desde perl 5.24 en adelante será una expresión regular
error del compilador. Si necesita examinar los bytes individuales que componen una codificación UTF8
carácter, luego use "utf8 :: encode ()" en la cadena (o una copia) primero.

literal control personajes in variable nombres
Esta desaprobación afecta cosas como $ \ cT, donde \ cT es un control literal (como un "NAK"
o carácter "RECONOCIMIENTO NEGATIVO") en el código fuente. Sorprendentemente, parece que
originalmente esto fue pensado como la forma canónica de acceder a variables como $ ^ T, con
la forma de intercalación solo se agrega como alternativa.

La forma de control literal está en desuso por dos razones principales. Tiene lo que es probable
errores no solucionables, como $ \ cI no funciona como un alias para $ ^ I, y su uso no se
portátil a plataformas que no son ASCII: mientras que $ ^ T funcionará en todas partes, \ cT es un espacio en blanco en
EBCDIC. [perl # 119123]

Referencias a no enteros no positivo enteros in $/
Establecer $ / como una referencia a cero o una referencia a un entero negativo ahora está en desuso,
y se comportará exactamente como si estuviera establecido en "undef". Si desea configurar el comportamiento de sorber
$ / a "indef" explícitamente.

Establecer $ / como una referencia a un número no entero ahora está prohibido y arrojará un error. Perl
nunca ha documentado lo que sucedería en este contexto y aunque solía comportarse como
Igual que establecer $ / en la dirección de las referencias en el futuro, puede comportarse de manera diferente,
por eso hemos prohibido este uso.

Caracter pareo rutinas in POSIX
El uso de cualquiera de estas funciones en el módulo "POSIX" ahora está en desuso: "isalnum",
"isalpha", "iscntrl", "isdigit", "isgraph", "islower", "isprint", "ispunct", "isspace",
"isupper" y "isxdigit". Las funciones tienen errores y no funcionan con codificación UTF-8
instrumentos de cuerda. Consulte sus entradas en POSIX para obtener más información.

Se genera una advertencia en la primera llamada a cualquiera de ellos desde cada lugar en el código que
son llamados. (Por lo tanto, una declaración repetida en un bucle generará solo una advertencia).

Basado en intérprete hilos están now desanimado
Los "hilos basados ​​en intérpretes" proporcionados por Perl no son el sistema rápido y ligero para
multitarea que uno podría esperar o desear. Los subprocesos se implementan de manera que
hazlos fáciles de usar incorrectamente. Pocas personas saben cómo usarlos correctamente o podrán
proporcionar ayuda.

Se desaconseja oficialmente el uso de subprocesos basados ​​en intérpretes en perl.

Módulo mudanzas
Los siguientes módulos se eliminarán de la distribución principal en una versión futura, y
en ese momento deberá instalarse desde CPAN. Distribuciones en CPAN que requieren
estos módulos deberán enumerarlos como requisitos previos.

Las versiones principales de estos módulos ahora emitirán advertencias de categoría "obsoleta" para alertar
usted a este hecho. Para silenciar estas advertencias de obsolescencia, instale los módulos en cuestión
de CPAN.

Tenga en cuenta que la eliminación planificada de estos módulos del núcleo no refleja un juicio
sobre la calidad del código y no debe tomarse como una sugerencia de que su uso sea
detenido. Su desinclusión del núcleo depende principalmente de su necesidad de iniciarse
una instalación de Perl totalmente funcional y compatible con CPAN, sin preocupaciones sobre su diseño.

CGI y sus CGI :: paquetes asociados
inc :: último
Paquete :: Constantes
Module :: Build y su Module :: Build :: paquetes asociados

Utilidad mudanzas
Las siguientes utilidades se eliminarán de la distribución principal en una versión futura,
y en ese momento deberá instalarse desde CPAN.

encontrar2perl
s2p
a2p

Rendimiento Complementos


· Perl tiene un nuevo mecanismo de copia en escritura que evita la necesidad de copiar el
búfer de cadena al asignar de un escalar a otro. Esto hace que la copia sea grande
las cadenas aparecen mucho más rápido. Modificar una de las dos (o más) cadenas después de una
La asignación forzará una copia internamente. Esto hace que sea innecesario pasar cadenas por
referencia para la eficiencia.

Esta función ya estaba disponible en 5.18.0, pero no estaba habilitada de forma predeterminada. Es el
predeterminado ahora, por lo que ya no necesita compilar perl con el Configurar argumento:

-Accflags = -DPERL_NEW_COPY_ON_WRITE

Se puede deshabilitar (por ahora) en una compilación de Perl con:

-Accflags = -DPERL_NO_COW

En algunos sistemas operativos, Perl se puede compilar de tal manera que cualquier intento de
modificar los búferes de cadena compartidos por varios SV se bloqueará. De esta manera, los autores de XS pueden probar
que sus módulos manejan escalares de copia sobre escritura correctamente. Consulte "Copiar al escribir" en
perlguts para detalles.

· Perl tiene un optimizador para patrones de expresión regular. Analiza el patrón para
encontrar cosas como la longitud mínima que debe tener una cadena para que coincida, etc.
maneja mejor los puntos de código que están por encima del rango Latin1.

· Ejecutar una expresión regular que contenga el ancla "^" (o su variante bajo la bandera "/ m")
se ha hecho mucho más rápido en varias situaciones.

· Los valores hash precalculados ahora se utilizan en más lugares durante la búsqueda de métodos.

· Las búsquedas constantes de claves hash ($ hash {clave} en lugar de $ hash {$ clave}) han tenido durante mucho tiempo
valor hash interno calculado en tiempo de compilación, para acelerar la búsqueda. Esta optimización
solo ahora también se ha aplicado a las rebanadas de hash.

· Operadores combinados "y" y "o" en contexto nulo, como los generados para "a menos que
($ a && $ b) "y" if ($ a || b) "ahora cortocircuitan directamente al final de la declaración.
[perl # 120128]

· En ciertas situaciones, cuando "return" es la última declaración en el principal de una subrutina
alcance, se optimizará. Esto significa código como:

sub baz {retorno $ gato; }

ahora se comportará como:

sub baz {$ gato; }

que es notablemente más rápido.

[perl # 120765]

· Código como:

my $ x; # o @x,% x
my $ y;

ahora está optimizado para:

mi ($ x, $ y);

En combinación con la optimización de padrange introducida en v5.18.0, esto significa más tiempo
sin inicializar mis declaraciones de variables también están optimizadas, por lo que:

my $ x; my @y; my% z;

se convierte en:

mi ($ x, @y,% z);

[perl # 121077]

· La creación de ciertos tipos de listas, incluidas matrices y porciones hash, ahora está
más rápido.

· La optimización para matrices indexadas con un pequeño entero constante ahora se aplica para
enteros en el rango -128..127, en lugar de 0..255. Esto debería acelerar el código Perl
usando expresiones como $ x [-1], a expensas del código (presumiblemente mucho más raro) usando
expresiones como $ x [200].

· La primera iteración sobre un hash grande (usando "claves" o "cada uno") ahora es más rápida. Este es
logrado mediante la asignación previa del estado del iterador interno del hash, en lugar de perezosamente
creándolo cuando el hash se itera por primera vez. (Para pequeños hashes, el iterador sigue siendo
creado solo cuando se necesita por primera vez. La suposición es que es más probable que los hash pequeños
ser utilizados como objetos y, por lo tanto, nunca asignados. Para hashes grandes, eso es menos
probable que sea cierto, y el costo de asignar el iterador se ve abrumado por el costo de
asignando espacio para el propio hash).

· Al hacer una coincidencia global de expresiones regulares en una cadena que proviene de "readline" o "<>"
operador, los datos ya no se copian innecesariamente. [perl # 121259]

· Desreferenciar (como en "$ obj -> [0]" o "$ obj -> {k}") ahora es más rápido cuando $ obj es un
instancia de una clase que tiene métodos sobrecargados, pero no sobrecarga ninguno de los
métodos de eliminación de referencias "@ {}", "% {}", etc.

· El optimizador de Perl ya no omite el código de optimización que sigue a ciertos "eval {}"
expresiones (incluidas aquellas con un bucle infinito aparente).

· La implementación ahora hace un mejor trabajo al evitar el trabajo sin sentido en tiempo de ejecución.
Operaciones "nulas" internas libres de efectos (creadas como un efecto secundario del análisis de Perl
programas) normalmente se eliminan durante la compilación. Esa eliminación ahora se aplica en
algunas situaciones que no fueron manejadas previamente.

· Perl ahora hace menos E / S de disco cuando se trata de propiedades Unicode que cubren hasta
tres rangos de puntos de código consecutivos.

Módulos Pragmático


Nuevo Módulos Pragmático
· Se ha añadido 0.007 experimental al núcleo de Perl.

· Se ha agregado IO :: Socket :: IP 0.29 al núcleo de Perl.

Actualizado Módulos Pragmático
· Archive :: Tar se ha actualizado de la versión 1.90 a 1.96.

· Arybase se ha actualizado de la versión 0.06 a 0.07.

· Attribute :: Handlers se ha actualizado de la versión 0.94 a 0.96.

· Los atributos se han actualizado de la versión 0.21 a 0.22.

· Autodie se ha actualizado de la versión 2.13 a la 2.23.

· Autocargador se ha actualizado de la versión 5.73 a 5.74.

· El uso automático se ha actualizado de la versión 1.07 a la 1.08.

· B se ha actualizado de la versión 1.42 a 1.48.

· B :: Concise se ha actualizado de la versión 0.95 a 0.992.

· B :: Debug se ha actualizado de la versión 1.18 a 1.19.

· B :: Deparse se ha actualizado de la versión 1.20 a la 1.26.

· La base se ha actualizado de la versión 2.18 a la 2.22.

· Benchmark se ha actualizado de la versión 1.15 a la 1.18.

· Bignum se ha actualizado de la versión 0.33 a 0.37.

· Carp se ha actualizado de la versión 1.29 a 1.3301.

· CGI se ha actualizado de la versión 3.63 a 3.65. NOTA: CGI está obsoleto y puede ser
eliminado de una versión futura de Perl.

· Charnames se ha actualizado de la versión 1.36 a 1.40.

· Class :: Struct se ha actualizado de la versión 0.64 a 0.65.

· Compress :: Raw :: Bzip2 se ha actualizado de la versión 2.060 a la 2.064.

· Compress :: Raw :: Zlib se ha actualizado de la versión 2.060 a la 2.065.

· Config :: Perl :: V se ha actualizado de la versión 0.17 a la 0.20.

· La constante se ha actualizado de la versión 1.27 a la 1.31.

· CPAN se ha actualizado de la versión 2.00 a 2.05.

· CPAN :: Meta se ha actualizado de la versión 2.120921 a 2.140640.

· CPAN :: Meta :: Requirements se ha actualizado de la versión 2.122 a 2.125.

· CPAN :: Meta :: YAML se ha actualizado de la versión 0.008 a 0.012.

· Data :: Dumper se ha actualizado de la versión 2.145 a 2.151.

· DB se ha actualizado de la versión 1.04 a 1.07.

· DB_File se ha actualizado de la versión 1.827 a 1.831.

· DBM_Filter se ha actualizado de la versión 0.05 a 0.06.

· Obsoleto se ha actualizado de la versión 0.02 a 0.03.

· Devel :: Peek se ha actualizado de la versión 1.11 a 1.16.

· Devel :: PPPort se ha actualizado de la versión 3.20 a la 3.21.

· Los diagnósticos se han actualizado de la versión 1.31 a la 1.34.

· Digest :: MD5 se ha actualizado de la versión 2.52 a la 2.53.

· Digest :: SHA se ha actualizado de la versión 5.84 a la 5.88.

· DynaLoader se ha actualizado de la versión 1.18 a la 1.25.

· Encode se ha actualizado de la versión 2.49 a 2.60.

· La codificación se ha actualizado de la versión 2.6_01 a 2.12.

· El inglés se ha actualizado de la versión 1.06 a la 1.09.

$ OLD_PERL_VERSION se agregó como un alias de $].

· Errno se ha actualizado de la versión 1.18 a 1.20_03.

· Exportador se ha actualizado de la versión 5.68 a 5.70.

· ExtUtils :: CBuilder se ha actualizado de la versión 0.280210 a 0.280216.

· ExtUtils :: Command se ha actualizado de la versión 1.17 a 1.18.

· ExtUtils :: Embed se ha actualizado de la versión 1.30 a 1.32.

· ExtUtils :: Install se ha actualizado de la versión 1.59 a 1.67.

· ExtUtils :: MakeMaker se ha actualizado de la versión 6.66 a la 6.98.

· ExtUtils :: Miniperl se ha actualizado de la versión a 1.01.

· ExtUtils :: ParseXS se ha actualizado de la versión 3.18 a 3.24.

· ExtUtils :: Typemaps se ha actualizado de la versión 3.19 a la 3.24.

· ExtUtils :: XSSymSet se ha actualizado de la versión 1.2 a 1.3.

· La función se ha actualizado de la versión 1.32 a 1.36.

· Los campos se han actualizado de la versión 2.16 a 2.17.

· File :: Basename se ha actualizado de la versión 2.84 a 2.85.

· Archivo :: Copiar se ha actualizado de la versión 2.26 a la 2.29.

· Archivo :: DosGlob se ha actualizado de la versión 1.10 a la 1.12.

· File :: Fetch se ha actualizado de la versión 0.38 a 0.48.

· File :: Find se ha actualizado de la versión 1.23 a 1.27.

· File :: Glob se ha actualizado de la versión 1.20 a 1.23.

· File :: Spec se ha actualizado de la versión 3.40 a 3.47.

· File :: Temp se ha actualizado de la versión 0.23 a 0.2304.

· FileCache se ha actualizado de la versión 1.08 a la 1.09.

· Filter :: Simple se ha actualizado de la versión 0.89 a 0.91.

· Filter :: Util :: Call se ha actualizado de la versión 1.45 a 1.49.

· Getopt :: Long se ha actualizado de la versión 2.39 a 2.42.

· Getopt :: Std se ha actualizado de la versión 1.07 a la 1.10.

· Hash :: Util :: FieldHash se ha actualizado de la versión 1.10 a 1.15.

· HTTP :: Tiny se ha actualizado de la versión 0.025 a 0.043.

· I18N :: Langinfo se ha actualizado de la versión 0.10 a 0.11.

· I18N :: LangTags se ha actualizado de la versión 0.39 a 0.40.

· Si se ha actualizado de la versión 0.0602 a 0.0603.

· Inc :: latest se ha actualizado de la versión 0.4003 a 0.4205. NOTA: inc :: último es
obsoleto y puede eliminarse de una versión futura de Perl.

· Integer se ha actualizado de la versión 1.00 a 1.01.

· IO se ha actualizado de la versión 1.28 a 1.31.

· IO :: Compress :: Gzip y sus amigos se han actualizado de la versión 2.060 a 2.064.

· IPC :: Cmd se ha actualizado de la versión 0.80 a 0.92.

· IPC :: Open3 se ha actualizado de la versión 1.13 a la 1.16.

· IPC :: SysV se ha actualizado de la versión 2.03 a la 2.04.

· JSON :: PP se ha actualizado de la versión 2.27202 a 2.27203.

· List :: Util se ha actualizado de la versión 1.27 a 1.38.

· La configuración regional se ha actualizado de la versión 1.02 a la 1.03.

· Locale :: Codes se ha actualizado de la versión 3.25 a la 3.30.

· Locale :: Maketext se ha actualizado de la versión 1.23 a 1.25.

· Math :: BigInt se ha actualizado de la versión 1.9991 a 1.9993.

· Math :: BigInt :: FastCalc se ha actualizado de la versión 0.30 a la 0.31.

· Math :: BigRat se ha actualizado de la versión 0.2604 a 0.2606.

· MIME :: Base64 se ha actualizado de la versión 3.13 a 3.14.

· Module :: Build se ha actualizado de la versión 0.4003 a 0.4205. NOTA: Module :: Build es
obsoleto y puede eliminarse de una versión futura de Perl.

· Module :: CoreList se ha actualizado de la versión 2.89 a 3.10.

· Module :: Load se ha actualizado de la versión 0.24 a 0.32.

· Module :: Load :: Conditional se ha actualizado de la versión 0.54 a 0.62.

· Module :: Metadata se ha actualizado de la versión 1.000011 a 1.000019.

· Mro se ha actualizado de la versión 1.11 a 1.16.

· Net :: Ping se ha actualizado de la versión 2.41 a la 2.43.

· Opcode se ha actualizado de la versión 1.25 a 1.27.

· Package :: Constants se ha actualizado de la versión 0.02 a 0.04. NOTA:
Package :: Constants está obsoleto y puede eliminarse de una versión futura de Perl.

· Params :: Check se ha actualizado de la versión 0.36 a la 0.38.

· Parent se ha actualizado de la versión 0.225 a 0.228.

· Parse :: CPAN :: Meta se ha actualizado de la versión 1.4404 a 1.4414.

· Perl :: OSType se ha actualizado de la versión 1.003 a 1.007.

· Perlfaq se ha actualizado de la versión 5.0150042 a 5.0150044.

· PerlIO se ha actualizado de la versión 1.07 a la 1.09.

· La codificación PerlIO :: se ha actualizado de la versión 0.16 a 0.18.

· PerlIO :: scalar se ha actualizado de la versión 0.16 a 0.18.

· PerlIO :: via se ha actualizado de la versión 0.12 a 0.14.

· Pod :: Escapes se ha actualizado de la versión 1.04 a 1.06.

· Pod :: Functions se ha actualizado de la versión 1.06 a 1.08.

· Pod :: Html se ha actualizado de la versión 1.18 a 1.21.

· Pod :: Parser se ha actualizado de la versión 1.60 a 1.62.

· Pod :: Perldoc se ha actualizado de la versión 3.19 a la 3.23.

· Pod :: Usage se ha actualizado de la versión 1.61 a 1.63.

· POSIX se ha actualizado de la versión 1.32 a 1.38_03.

· Re se ha actualizado de la versión 0.23 a 0.26.

· Safe se ha actualizado de la versión 2.35 a 2.37.

· Scalar :: Util se ha actualizado de la versión 1.27 a 1.38.

· SDBM_File se ha actualizado de la versión 1.09 a 1.11.

· Socket se ha actualizado de la versión 2.009 a 2.013.

· Storable se ha actualizado de la versión 2.41 a la 2.49.

· Estricto se ha actualizado de la versión 1.07 a la 1.08.

· Subs se ha actualizado de la versión 1.01 a 1.02.

· Sys :: Hostname se ha actualizado de la versión 1.17 a 1.18.

· Sys :: Syslog se ha actualizado de la versión 0.32 a 0.33.

· Term :: Cap se ha actualizado de la versión 1.13 a la 1.15.

· Term :: ReadLine se ha actualizado de la versión 1.12 a la 1.14.

· Test :: Harness se ha actualizado de la versión 3.26 a 3.30.

· Test :: Simple se ha actualizado de la versión 0.98 a 1.001002.

· Texto :: ParseWords se ha actualizado de la versión 3.28 a 3.29.

· Text :: Tabs se ha actualizado de la versión 2012.0818 a 2013.0523.

· Text :: Wrap se ha actualizado de la versión 2012.0818 a 2013.0523.

· Thread se ha actualizado de la versión 3.02 a 3.04.

· Thread :: Queue se ha actualizado de la versión 3.02 a la 3.05.

· Los hilos se han actualizado de la versión 1.86 a 1.93.

· Threads :: shared se ha actualizado de la versión 1.43 a la 1.46.

· Tie :: Array se ha actualizado de la versión 1.05 a la 1.06.

· Tie :: File se ha actualizado de la versión 0.99 a 1.00.

· Tie :: Hash se ha actualizado de la versión 1.04 a 1.05.

· Tie :: Scalar se ha actualizado de la versión 1.02 a la 1.03.

· Tie :: StdHandle se ha actualizado de la versión 4.3 a la 4.4.

· Time :: HiRes se ha actualizado de la versión 1.9725 a 1.9726.

· Time :: Piece se ha actualizado de la versión 1.20_01 a 1.27.

· Unicode :: Collate se ha actualizado de la versión 0.97 a 1.04.

· Unicode :: Normalize se ha actualizado de la versión 1.16 a 1.17.

· Unicode :: UCD se ha actualizado de la versión 0.51 a 0.57.

· Utf8 se ha actualizado de la versión 1.10 a la 1.13.

· La versión se ha actualizado de la versión 0.9902 a la 0.9908.

· Vmsish se ha actualizado de la versión 1.03 a la 1.04.

· Warnings se ha actualizado de la versión 1.18 a 1.23.

· Win32 se ha actualizado de la versión 0.47 a 0.49.

· XS :: Typemap se ha actualizado de la versión 0.10 a 0.13.

· XSLoader se ha actualizado de la versión 0.16 a 0.17.

Documentación


Nuevo Documentación
perlrepositorio

Este documento se eliminó (en realidad, se renombró como perlgit y se le dio una revisión importante) en Perl.
v5.14, lo que hace que los sitios web de documentación de Perl muestren la versión ahora desactualizada en Perl
v5.12 como la última versión. Ahora se ha restaurado en forma de código auxiliar, dirigiendo a los lectores a
información actual.

Cambios a Ya eres Documentación
perldatos

· Se han agregado nuevas secciones para documentar el nuevo segmento de matriz de índice / valor y clave / valor
sintaxis de trozos hash.

perldebguts

· Las subrutinas del depurador "DB :: goto" y "DB :: lsub" ahora están documentadas. [perl # 77680]

perlexperimento

· "\ S" que coincide con "\ cK" se marca como experimental.

· Se aceptaron subprocesos en v5.8.0 (pero se desaconsejan a partir de v5.20.0).

· Los dobles largos no se consideran experimentales.

· Codifica en expresiones regulares, verbos de retroceso de expresiones regulares y lvalue
las subrutinas ya no se enumeran como experimentales. (Esto también afecta a perlre y
perlsub.)

perlfunc

· "Cortar" y "masticar" ahora tenga en cuenta que pueden restablecer el iterador hash.

· El manejo de los argumentos por parte de "exec" ahora está más claramente documentado.

· "Eval EXPR" ahora tiene advertencias sobre la expansión de números de punto flotante en algunas configuraciones regionales.

· "Goto EXPR" ahora está documentado para manejar una expresión que se evalúa en un código
referencia como si fuera "goto & $ coderef". Este comportamiento tiene al menos diez años.

· Desde Perl v5.10, ha sido posible que las subrutinas en @INC devuelvan una referencia
a un escalar que contiene el código fuente inicial para anteponerlo al archivo. Esto es ahora
Documentada.

· La documentación de "ref" se ha actualizado para recomendar el uso de "bendito", "isa"
y "reftype" cuando se trata de referencias a objetos bendecidos.

perlguts

· Se han realizado numerosos cambios menores para reflejar los cambios realizados en los componentes internos de perl en
este comunicado.

· Se han agregado nuevas secciones sobre valores de solo lectura y copia al escribir.

Perlhack

· Se ha actualizado la sección Guía de parches súper rápida.

consejos de perlhack

· La documentación se ha actualizado para incluir algunos ejemplos más del uso de "gdb".

perllexadvertir

· La documentación de perllexwarn utilizada para describir la jerarquía de categorías de advertencia
entendido por el pragma de advertencias. Esa descripción ahora se ha trasladado a las advertencias.
documentación en sí, dejando perllexwarn como un código auxiliar que apunta a él. Este cambio
consolida toda la documentación para las advertencias léxicas en un solo lugar.

Perlocale

· La documentación ahora menciona fc () y "\ F", e incluye muchas aclaraciones y
correcciones en general.

perplejo

· El diseño del lenguaje de Perl siempre ha requerido operadores monomórficos. Esto es ahora
mencionado explícitamente.

perlopentut

· El tutorial "abierto" ha sido completamente reescrito por Tom Christiansen, y ahora se enfoca
en cubrir solo los conceptos básicos, en lugar de proporcionar una referencia completa a todos los
cosas que se pueden abrir. Esta reescritura fue el resultado de una vigorosa discusión sobre
perl5-porters comenzó con una serie de mejoras escritas por Alexander Hartmaier para
el perlopentut existente. Un documento "más de lo que nunca quiso saber" "abierto"
puede seguir en versiones posteriores de perl.

Perlre

· El hecho de que el motor de expresiones regulares no hace ningún esfuerzo para llamar a las construcciones (? {}) Y (?? {})
cualquier número especificado de veces (aunque básicamente será DWIM en caso de un éxito
coincidencia) ha sido documentado.

· El modificador "/ r" (para sustitución no destructiva) ahora está documentado. [perl # 119151]

· La documentación para "/ x" y "(? # Comentario)" se ha ampliado y aclarado.

perlreguts

· La documentación se ha actualizado a la luz de los cambios recientes en regcomp.c.

perlsub

· La necesidad de predeclarar funciones recursivas con prototipos para el prototipo
ser honrado en la llamada recursiva ahora está documentado. [perl # 2726]

· Ahora se incluye una lista de nombres de subrutinas utilizados por la implementación de perl. [perl
# 77680]

trampa de perlas

· Ahora hay una sección de JavaScript.

perlunicode

· La documentación se ha actualizado para reflejar los cambios de "Bidi_Class" en Unicode 6.3.

Perlvar

· Una nueva sección que explica los problemas de rendimiento de $ `, $ & y $ ', que incluye
Se han agregado soluciones provisionales y cambios en diferentes versiones de Perl.

· Tres nombres de variables en inglés que se han documentado durante mucho tiempo pero que en realidad no existen
han sido eliminados de la documentación. Estos fueron $ OLD_PERL_VERSION, $ OFMT y
$ ARRAY_BASE.

(En realidad, "OLD_PERL_VERSION" existen, comenzando con esta revisión, pero permanecieron
indocumentado hasta perl 5.22.0.)

perlxs

· Se han solucionado varios problemas en el ejemplo "MY_CXT".

Diagnóstico


Se han realizado las siguientes adiciones o cambios a la salida de diagnóstico, incluidas las advertencias
y mensajes de error fatales. Para obtener la lista completa de mensajes de diagnóstico, consulte perldiag.

Nuevo Diagnóstico
Nuevo Errores

· Eliminar el argumento es un segmento de matriz de índice / valor, usar un segmento de matriz

(F) Usó la sintaxis de segmento de matriz de índice / valor (% matriz [...]) como argumento para "eliminar".
Probablemente quiso decir @array [...] con un símbolo @ en su lugar.

· Eliminar el argumento es un segmento de hash de clave / valor, usar un segmento de hash

(F) Usó la sintaxis de segmento hash clave / valor (% hash {...}) como argumento para "eliminar".
Probablemente quisiste decir @hash {...} con un símbolo @ en su lugar.

· Las constantes de lista mágica no son compatibles

(F) Asignaste una matriz mágica a un elemento de alijo, y luego trataste de usar el
subrutina de la misma ranura. Le está pidiendo a Perl que haga algo que no puede hacer,
los detalles están sujetos a cambios entre las versiones de Perl.

· Se prohíbe la configuración agregada $ / a una referencia de% s

Nuevo Advertencias

·% S en la referencia es experimental:

La función "auto-deref" es experimental.

A partir de la v5.14.0, era posible utilizar push, pop, keys y otros dispositivos integrados.
funciona no solo en tipos agregados, sino en referencias a ellos. La característica no fue
implementado a su especificación original prevista, y ahora puede volverse redundante para
desreferenciación de postfix. Siempre se ha categorizado como una función experimental y
en v5.20.0 lleva una advertencia como tal.

Ahora se emitirán advertencias en el momento de la compilación cuando se detecten estas operaciones.

no si $]> = 5.01908, advertencias => "experimental :: autoderef";

Considere, sin embargo, reemplazar el uso de estas funciones, ya que pueden cambiar el comportamiento
de nuevo antes de estabilizarse.

· Una secuencia de múltiples espacios en una definición de alias de nombres de caracteres está obsoleta

El espacio en blanco final en una definición de alias de nombres de caracteres está en desuso

Estas dos advertencias de obsolescencia relacionadas con "\ N {...}" se implementaron incorrectamente. Ellos
no advirtió de forma predeterminada (ahora lo hacen) y no se pudo convertir en fatal a través de "advertencias de uso
FATAL => 'obsoleto' "(ahora pueden).

· El prototipo de atributo (% s) descarta el atributo del prototipo anterior en el mismo sub

(W misc) Se declaró un sub como "sub foo: prototype (A): prototype (B) {}", para
ejemplo. Dado que cada sub solo puede tener un prototipo, las declaraciones anteriores son
descartados mientras se aplica el último.

· Carácter \ 0 no válido en% s para% s:% s \ 0% s

(W syscalls) Caracteres \ 0 incrustados en nombres de ruta u otros argumentos de llamadas al sistema
producir una advertencia a partir del 5.20. Las partes después de \ 0 fueron anteriormente ignoradas por el sistema
llamadas.

· Punto de código no Unicode coincidente 0x% X contra la propiedad Unicode; puede no ser portátil.

Esto reemplaza el mensaje "El punto de código 0x% X no es Unicode, todas las coincidencias \ p {} fallan; todas
\ P {} coincidencias exitosas ".

· Falta ']' en el prototipo de% s:% s

(W ilegalproto) Una agrupación se inició con "[" pero nunca se cerró con "]".

· Posible problema de precedencia con el operador de flujo de control

(Sintaxis W) Existe un posible problema con la mezcla de un operador de flujo de control
(por ejemplo, "retorno") y un operador de baja precedencia como "o". Considerar:

sub {return $ a o $ b; }

Esto se analiza como:

sub {(devuelve $ a) o $ b; }

Que es efectivamente justo:

sub {return $ a; }

Utilice paréntesis o la variante de alta precedencia del operador.

Tenga en cuenta que esto también puede activarse para construcciones como:

sub {1 si muere; }

· La desreferencia del postfijo es experimental

(S experimental :: postderef) Esta advertencia se emite si usa el método experimental
sintaxis de desreferencia de postfix. Simplemente suprima la advertencia si desea utilizar el
función, pero sepa que, al hacerlo, corre el riesgo de utilizar un
característica que puede cambiar o eliminarse en una versión futura de Perl:

sin advertencias "experimental :: postderef";
utilizar la función "postderef", "postderef_qq";
$ ref -> $ *;
$ aref -> @ *;
$ aref -> @ [@ índices];
...etc...

· Prototipo '% s' anulado por atributo 'prototipo (% s)' en% s

(Prototipo W) Se declaró un prototipo entre paréntesis después del subnombre y
a través del atributo de prototipo. El prototipo entre paréntesis es inútil, ya que
ser reemplazado por el prototipo del atributo antes de que se use.

· Valor escalar @% s [% s] mejor escrito como $% s [% s]

(Sintaxis W) En contexto escalar, ha utilizado un segmento de índice / valor de matriz (indicado por%)
para seleccionar un solo elemento de una matriz. Generalmente es mejor pedir un escalar
valor (indicado por $). La diferencia es que $ foo [& bar] siempre se comporta como un
escalar, tanto en el valor que devuelve como al evaluar su argumento, mientras
% foo [& bar] proporciona un contexto de lista para su subíndice, que puede hacer cosas extrañas si
espera sólo un subíndice. Cuando se llama en el contexto de la lista, también devuelve el
index (what & bar devuelve) además del valor.

· Valor escalar @% s {% s} mejor escrito como $% s {% s}

(Sintaxis W) En contexto escalar, ha utilizado un segmento de clave / valor hash (indicado por%) para
seleccione un solo elemento de un hash. Generalmente es mejor pedir un valor escalar
(indicado por $). La diferencia es que $ foo {& bar} siempre se comporta como un escalar,
tanto en el valor que devuelve como al evaluar su argumento, mientras que @foo {& bar} y
proporciona un contexto de lista para su subíndice, que puede hacer cosas extrañas si está
esperando sólo un subíndice. Cuando se llama en el contexto de la lista, también devuelve la clave en
Además del valor.

· Establecer $ / como una referencia a% s como una forma de sorber está en desuso, tratándose como indef

· Salida inesperada% u

(S) salida() se llamó o el guión terminó correctamente cuando
"PERL_EXIT_WARN" se configuró en "PL_exit_flags".

· Fallo de salida inesperado% d

(S) Un no atrapado morir () se llamó cuando se configuró "PERL_EXIT_WARN" en "PL_exit_flags".

· El uso de caracteres de control literal en los nombres de las variables está desaprobado

(D en desuso) Uso de caracteres de control literal en la fuente para hacer referencia a ^ FOO
variables, como $ ^ X y $ {^ GLOBAL_PHASE} ahora están en desuso. Esto solo afecta al código
como $ \ cT, donde \ cT es un control (como un "SOH") en el código fuente: $ {"\ cT"} y $ ^ T
Se mantiene valido.

· Uso inútil del modificador de la codicia

Esto corrige [Perl # 42957].

Cambios a Ya eres Diagnóstico
· Las advertencias y errores del motor de expresiones regulares ahora están limpios en UTF-8.

· El mensaje de error "Condición desconocida del interruptor" tiene algunos cambios leves. Este error
se dispara cuando hay una condición desconocida en un condicional "(? (foo))". El error
mensaje usado para leer:

Condición de cambio desconocida (? (% S en regex;

Pero lo que% s podría ser dependía principalmente de la suerte. Para "(? (Foobar))", es posible que haya visto
"fo" o "f". Para los caracteres Unicode, generalmente obtendría una cadena dañada. los
el mensaje ha sido cambiado para leer:

Condición de cambio desconocida (? (...)) en expresiones regulares;

Además, el marcador '<- AQUÍ' en el error ahora apuntará al lugar correcto en
la expresión regular.

· La advertencia "% s" \ x% X "no se asigna a Unicode" ahora aparece correctamente en la lista como grave
advertencia en lugar de un error fatal.

· En raras circunstancias, uno podría obtener un "No se puede coaccionar REF de solo lectura a la cadena"
en lugar de la habitual "Modificación de un valor de solo lectura". Este error alternativo
mensaje ha sido eliminado.

· "Uso ambiguo de * resuelto como operador *": esta y otras advertencias similares sobre "%" y
"&" solía ocurrir en algunas circunstancias en las que no había un operador del tipo citado,
por lo que la advertencia fue completamente incorrecta. Esto se ha solucionado [perl # 117535, # 76910].

· Las advertencias sobre prototipos de subrutinas mal formadas ahora son más consistentes en la forma en que
se renderizan los prototipos. Algunas de estas advertencias truncarían los prototipos que contienen
nulos. En otros casos, una advertencia suprimiría a otra. La advertencia sobre ilegal
los personajes en los prototipos ya no dicen "después de '_'" si el personaje malo venía antes
el subrayado.

· Las reglas plegables de Perl no están actualizadas para 0x% X; por favor use la utilidad perlbug para
reporte; en expresiones regulares; marcado por <- AQUÍ en m /% s /

Este mensaje ahora solo está en la categoría regexp, y no en la categoría obsoleta.
Sigue siendo una advertencia predeterminada (es decir, grave) [perl # 89648].

· %% s [% s] en contexto escalar mejor escrito como $% s [% s]

Esta advertencia ahora ocurre para cualquier% array [$ index] o% hash {key} que se sepa que está en escalar
contexto en tiempo de compilación. Anteriormente estaba redactado "Valor escalar %% s [% s] mejor
escrito como $% s [% s] ".

· Condición de cambio no reconocida en regex; marcado por <- AQUÍ en m /% s /:

La descripción de este diagnóstico se ha ampliado para cubrir todos los casos en los que
puede ocurrir una advertencia. También se han producido problemas con el posicionamiento del indicador de flecha.
resuelto.

· Los mensajes de error para "my ($ a? $ B $ c)" y "my (do {})" ahora mencionan "condicional
expresión "y" bloquear ", respectivamente, en lugar de leer" No se puede declarar nulo "
operación en "mi" '.

· Cuando "use re" debug "" ejecuta una expresión regular que contiene una referencia inversa, la depuración
la salida ahora muestra qué cadena se está emparejando.

· Se ha modificado la redacción del mensaje de error ahora fatal "El carácter que sigue a" \ c "debe ser ASCII"
como "El carácter que sigue a" \ c "debe ser ASCII imprimible" para enfatizar que en "\ cX", X
debe ser un imprimible (sin control) Carácter ASCII.

Utilidad Cambios


a2p

· Un posible bloqueo debido a un error de uno en uno al intentar acceder antes del comienzo
de un búfer se ha corregido. [perl # 120244]

bisect.pl

La herramienta de bisección de git Portabilidad / bisect.pl ha tenido muchas mejoras.

Se proporciona como parte de la distribución de origen, pero no se instala porque no
autónomo, ya que depende de que se ejecute desde dentro de un git checkout. Tenga en cuenta también que
no hace ningún intento de corregir pruebas, corregir errores en tiempo de ejecución o hacer algo útil para instalar -
su propósito es realizar cambios mínimos para obtener cualquier revisión histórica de interés para construir
y ejecutar lo más cerca posible de "tal cual", y así hacer que "git bisect" sea fácil de usar.

· Opcionalmente, puede ejecutar el caso de prueba con un tiempo de espera.

· Ahora se puede ejecutar in situ en un git checkout limpio.

· Puede ejecutar el caso de prueba en "valgrind".

· Puede aplicar parches y arreglos proporcionados por el usuario a la verificación de la fuente antes de compilar.

· Ahora tiene arreglos para permitir la construcción de varios rangos históricos más de bleadperl, que
puede ser útil para identificar el origen de errores o cambios de comportamiento.

encontrar2perl

· Find2perl ahora maneja "?" comodines correctamente. [perl # 113054]

perlbug

· perlbug ahora tiene una opción "-p" para adjuntar parches con un informe de error.

· Perlbug se ha modificado para proporcionar la plantilla de informe con terminaciones de línea CRLF en
Windows. [perl # 121277 ]

· Perlbug ahora hace el menor número posible de suposiciones sobre la codificación del informe.
Es probable que esto cambie en el futuro para asumir UTF-8 de forma predeterminada, pero permitir que un usuario
anular.

Configuración Compilación


· Los Makefile.PL para SDBM_File ahora genera una mejor Makefile, que evita una carrera
condición durante las marcas paralelas, lo que podría hacer que la compilación falle. Este es el
último problema conocido de fabricación paralela (en plataformas * nix), y por lo tanto creemos que un
La marca paralela ahora debería estar siempre libre de errores.

· instalarperl instaladorEl manejo de opciones ha sido refactorizado para usar Getopt :: Long.
Ambos son utilizados por el Makefile "instalar" destinos y no están instalados, por lo que estos
es probable que los cambios solo afecten a los scripts de instalación personalizados.

· Las opciones de una sola letra ahora también tienen nombres largos.

· Las opciones no válidas ahora se rechazan.

· Los argumentos de la línea de comandos que no son opciones ahora se rechazan.

· Cada uno ahora tiene una opción "--help" para mostrar el mensaje de uso.

El comportamiento de todas las invocaciones documentadas válidas no se modifica.

· Siempre que sea posible, la compilación ahora evita las invocaciones recursivas de make al construir puro
Extensiones de Perl, sin eliminar ningún paralelismo de la compilación. Actualmente alrededor de 80
las extensiones pueden ser procesadas directamente por el hacer_ext.pl herramienta, lo que significa que 80
invocaciones de make y 160 invocaciones de miniperla ya no se hacen.

· El sistema de compilación ahora funciona correctamente cuando se compila en GCC o Clang con tiempo de enlace
optimización habilitada (la opción "-flto"). [perl # 113022]

· Nombres base de biblioteca distintos con "d_libname_unique".

Al compilar perl con esta opción, los archivos de la biblioteca para los módulos XS se denominan
algo "único", por ejemplo, Hash / Util / Util.so se convierte
Hash / Util / PL_Hash__Util.so. Este comportamiento es similar a lo que ocurre actualmente en
VMS y sirve como base para el puerto de Android.

· Opción "sysroot" para indicar el directorio raíz lógico en gcc y clang.

Al compilar con este conjunto de opciones, tanto Configure como los compiladores buscan todos
encabezados y bibliotecas en este nuevo sysroot, en lugar de /.

Esto es un gran ahorro de tiempo si se realiza una compilación cruzada, pero también puede ayudar en las compilaciones nativas si
Los archivos de su cadena de herramientas tienen ubicaciones no estándar.

· Se ha renovado el modelo de compilación cruzada. Hay varias opciones nuevas y algunas
cambios incompatibles con versiones anteriores:

Ahora construimos binarios para miniperl y generate_uudmap para ser usados ​​en el host, en lugar de
que ejecutar cada llamada de miniperl en el objetivo; esto significa que, salvo 'hacer prueba',
ya no necesitamos acceder al sistema de destino una vez que se realiza la configuración. Puede proporcionar
binarios ya construidos a través de las opciones "hostperl" y "hostgenerate" para Configurar.

Además, si se dirige a una plataforma EBCDIC desde un host ASCII, o viceversa,
necesita ejecutar Configure con "-Uhostgenerate", para indicar que generate_uudmap debe
ser ejecutado en el objetivo.

Por último, también existe una forma de hacer que Configure finalice antes de tiempo, justo después de crear el
binarios de host, mediante la compilación cruzada sin especificar un "targetthost".

Los cambios incompatibles incluyen dejar de usar xconfig.h, xlib o Cross.pm, por lo que
Los archivos de configuración enlatados y los Makefiles deberán actualizarse.

· En relación con lo anterior, ahora existe una forma de especificar la ubicación de sh (o
equivalente) en el sistema de destino: "targeth".

Por ejemplo, Android tiene su sh en / system / bin / sh, por lo que si realiza una compilación cruzada desde una versión más
sistema Unixy normal con sh in / Bin / sh, "targeth" terminaría como / system / bin / sh, y
"sh" como / bin / sh.

· Por defecto, gcc 4.9 hace algunas optimizaciones que rompen perl. los -fwrapv opción
deshabilita esas optimizaciones (y probablemente otras), por lo que para gcc 4.3 y posteriores (desde
También puede haber problemas similares al acecho en versiones anteriores, pero -fwrapv fue
roto antes de 4.3, y las optimizaciones probablemente no desaparecerán), Configurar ahora agrega
-fwrapv a menos que el usuario lo solicite -fno-wrapv, que deshabilita -fwrapvo
-fsanitize = indefinido, que convierte los desbordes -fwrapv ignora los errores en tiempo de ejecución.
[perl # 121505 ]

Pruebas


· El objetivo make "test.valgrind" ahora permite que las pruebas se ejecuten en paralelo. Este objetivo
permite que el conjunto de pruebas de Perl se ejecute bajo Valgrind, que detecta ciertos tipos de C
errores de programación, aunque a un costo significativo en tiempo de ejecución. En hardware adecuado,
permitir la ejecución paralela recupera gran parte de ese costo adicional. [perl # 121431]

· Varias pruebas en t / porting / ya no se omiten cuando el perl .git directorio es
fuera del árbol de perl y señalado por $ GIT_DIR. [perl # 120505]

· El conjunto de pruebas ya no falla cuando el shell interactivo del usuario mantiene un $ PWD
variable de entorno, pero la / Bin / sh utilizado para ejecutar pruebas no lo hace.

Plataforma Soporte


Nuevo Plataformas
Android
Perl ahora se puede construir para Android, ya sea de forma nativa o mediante compilación cruzada, para
las tres arquitecturas disponibles actualmente (ARM, MIPS y x86), en una amplia gama de
versiones.

bitrig
Se ha agregado soporte de compilación para Bitrig, una bifurcación de OpenBSD.

FreeMiNT
Se ha agregado soporte para FreeMiNT, un sistema operativo de código abierto gratuito para el sistema Atari ST y
sus sucesores, basados ​​en el MiNT original que fue adoptado oficialmente por Atari.

Synology
Synology envía sus cajas NAS con una distribución de Linux ajustada (DSM) a un precio relativamente bajo
CPU (como Marvell Kirkwood mv6282 - ARMv5tel o Freescale QorIQ P1022 ppc -
e500v2) no está diseñado para estaciones de trabajo o desarrollo. Estas cajas deberían construirse ahora. los
Los problemas básicos son la ubicación no estándar de las herramientas.

Discontinuado Plataformas
"sfio"
Se ha eliminado el código relacionado con la compatibilidad con el sistema de E / S "sfio".

Perl 5.004 agregó soporte para usar la API nativa de "sfio", Safe / Fast I / O de AT&T
Biblioteca. Este código aún se construyó con v5.8.0, aunque fallaron muchas pruebas de regresión,
pero se rompió inadvertidamente antes de la versión v5.8.1, lo que significa que no ha funcionado
en cualquier versión de Perl lanzada desde entonces. En más de una década no hemos recibido ningún error.
informes sobre esto, por lo que está claro que nadie está utilizando esta funcionalidad en ningún
versión de Perl que todavía es compatible en algún grado.

AT&T 3b1
Configure el soporte para el 3b1, también conocido como AT&T Unix PC (y el AT&T similar
7300), se ha eliminado.

DG / UX
DG / UX era un Unix vendido por Data General. La última versión fue en abril de 2001. Solo
se ejecuta en el propio hardware de Data General.

EBCDIC
En ausencia de una fuente regular de informes de humo, el código destinado a admitir
Las plataformas EBCDIC se eliminarán de perl antes de la versión 5.22.0.

Específico de la plataforma Notas
Cygwin
· recv () en un identificador conectado llenaría la dirección del remitente devuelto con
lo que sea que haya sucedido en el búfer de trabajo. recv () ahora usa una solución
similar al Win32 recv () contenedor y devuelve una cadena vacía cuando recvfrom(2)
no modifica la longitud de la dirección proporcionada. [perl # 118843]

· Se corrigió un error de compilación en cygwin.c en Cygwin 1.7.28.

Las pruebas ahora manejan los errores que ocurren cuando "cygserver" no se está ejecutando.

GNU / Hurd
La biblioteca de compatibilidad BSD "libbsd" ya no es necesaria para las compilaciones.

Linux
El archivo de sugerencias ahora busca "libgdbm_compat" solo si también se desea "libgdbm".
El primero nunca es útil sin el segundo y, en algunas circunstancias, incluido
en realidad podría evitar la construcción.

Mac OS
El sistema de compilación ahora respeta una configuración "ld" proporcionada por el usuario que ejecuta Configurar.

MedianocheBSD
"objformat" se eliminó de la versión 0.4-RELEASE de MidnightBSD y se
en desuso en versiones anteriores. Esto provocó que el entorno de compilación fuera erróneo
configurado para "a.out" en lugar de "elf". Esto ahora se ha corregido.

Plataformas de endian mixto
El código que admite las operaciones "empaquetar" y "desempaquetar" en plataformas endian mixtas se ha
remoto. Creemos que Perl no ha podido construir sobre endian mixto.
arquitecturas (como PDP-11), por lo que no creemos que este cambio afecte a
plataformas que pudieron compilar v5.18.0.

VMS
· La función "PERL_ENV_TABLES" para controlar la población de% ENV en el inicio de perl
se rompió en Perl 5.16.0 pero ahora se ha solucionado.

· Omitir las comprobaciones de acceso a los mandos a distancia en opendir (). [perl # 121002]

· Una verificación de metacaracteres glob en una ruta devuelta por el operador "glob ()" ha
ha sido reemplazado por una comprobación de caracteres comodín VMS. Esto ahorra una significativa
número de llamadas innecesarias a "lstat ()", de modo que algunas operaciones globales simples se convierten en
60-80% más rápido.

Win32
· ¡"Cambiar nombre" y "vincular" en Win32 ahora configuran $! a ENOSPC y EDQUOT cuando corresponda.
[perl # 119857]

· Las opciones de archivo MAKE BUILD_STATIC y ALL_STATIC para vincular algunos o (casi) todos
extensiones estáticamente (en perl520.dll, y también en un perl-static.exe separado)
se rompieron para las compilaciones de MinGW. Esto ahora ha sido arreglado.

La opción ALL_STATIC también se ha mejorado para incluir Encode y Win32
extensiones (para compilaciones de VC ++ y MinGW).

· Se ha agregado soporte para construir con Visual C ++ 2013. Actualmente hay dos
posibles fallos de prueba (consulte "Prueba de Perl en Windows" en perlwin32) que
ojalá se resuelva pronto.

· Se ha agregado soporte experimental para compilar con Intel C ++ Compiler. los
nmake makefile (win32 / Makefile) y dmake makefile (win32 / makefile.mk) se pueden
usó. Una "prueba nmake" no se aprobará en este momento debido a cpan / CGI / t / url.t.

· Matar un árbol de procesos con "kill" en perlfunc y una señal negativa, se rompió
comenzando en 5.18.0. En este error, "kill" siempre devuelve 0 para una señal negativa.
incluso para PID válidos, y no se terminó ningún proceso. Esto se ha solucionado [perl
# 121230].

· El tiempo necesario para compilar perl en Windows se ha reducido considerablemente (tiempo
típicamente se ven ahorros en la región del 30-40%) al reducir el número de,
normalmente fallan, las llamadas de E / S para cada "require ()" (para miniperl.exe solamente). [perl
# 121119 ]

· Aproximadamente 15 minutos de inactividad en reposo se eliminaron de la ejecución de "hacer prueba" debido a un
error en el que el monitor de tiempo de espera utilizado para las pruebas no se podía cancelar una vez que
la prueba se completa y transcurre el tiempo de espera completo antes de ejecutar la siguiente prueba
expediente. [perl # 121395 ]

· En un perl construido sin pseudo-fork (las compilaciones de pseudo-fork no se vieron afectadas por este
error), matando un árbol de procesos con "kill ()" y una señal negativa resultó en
"kill ()" invierte el valor devuelto. Por ejemplo, si "kill ()" mató 1 proceso
PID del árbol, devolvió 0 en lugar de 1, y si "kill ()" se pasó 2 inválido
PID luego devolvió 2 en lugar de 0. Este probablemente ha sido el caso desde que
La función de eliminación del árbol de procesos se implementó en Win32. Ahora se ha corregido para
siga el comportamiento documentado. [perl # 121230
]

· Al compilar un perl de 64 bits, se lee una memoria no inicializada miniperl.exe, Utilizado
durante el proceso de compilación, podría dar lugar a 4 GB wperl.exe siendo creado. Esto tiene
ahora ha sido arreglado. (Tenga en cuenta que perl.exe en sí no se vio afectado, pero obviamente
wperl.exe se habría roto por completo.) [perl # 121471
]

· Perl ahora se puede construir con gcc versión 4.8.1 dehttp://www.mingw.org>. Esta
fue previamente roto debido a una definición incorrecta de DllMain () en uno de los perl
archivos fuente. Más temprano gcc Las versiones también se vieron afectadas al utilizar la versión 4 de la
paquete w32api. Versiones de gcc disponible desde
<http://mingw-w64.sourceforge.net/> no se vieron afectados. [perl # 121643
]

· El arnés de prueba ahora no tiene fallas cuando perl se construye en una unidad FAT con el
Sistema operativo Windows en una unidad NTFS. [perl # 21442
]

· Al clonar la pila de contexto en tenedor() emulación, Perl_cx_dup () se estrellaría
acceder a la información de los parámetros para las entradas de la pila de contexto que no incluían
parámetros, como con "& foo;". [perl # 121721
]

· Introducido por perl # 113536
, una fuga de memoria en cada
llamada a "sistema" y comillas inversas ("` `"), en la mayoría de las Perls de Win32 a partir de 5.18.0
ha sido arreglado. La pérdida de memoria solo ocurrió si habilitó psuedo-fork en su
compilación de Win32 Perl, y estaban ejecutando esa compilación en Server 2003 R2 o un sistema operativo más reciente.
La fuga no aparece en WinXP SP3. [perl # 121676
]

WinCE
· La construcción de módulos XS se ha restaurado en gran medida. Varios todavía no pueden (todavía)
construirse, pero ahora es posible construir Perl en WinCE con solo un par de
más parches (para Socket y ExtUtils :: MakeMaker), con suerte para ser incorporados
pronto.

· Perl ahora se puede construir de una sola vez sin la intervención del usuario en WinCE ejecutando
"nmake -f Makefile.ce all".

Se ha restaurado la compatibilidad con la construcción con EVC (Embedded Visual C ++) 4. Perl puede
también se puede crear con dispositivos inteligentes para Visual C ++ 2005 o 2008.

Interno Cambios


· La representación interna ha cambiado para las variables de coincidencia $ 1, $ 2 etc., $ `, $ &,
$ ', $ {^ PREMATCH}, $ {^ MATCH} y $ {^ POSTMATCH}. Utiliza un poco menos de memoria, evita
comparaciones de cadenas y conversiones numéricas durante la búsqueda, y utiliza 23 líneas menos de
C. Este cambio no debería afectar ningún código externo.

· Las matrices ahora usan NULL internamente para representar ranuras no utilizadas, en lugar de & PL_sv_undef.
& PL_sv_undef ya no se trata como un valor especial, por lo que av_store (av, 0, & PL_sv_undef)
hará que el elemento 0 de esa matriz contenga un escalar indefinido de solo lectura. "$ matriz [0] =
cualquier cosa "croará y" \ $ array [0] "se comparará igual a" \ undef ".

· El SV regresó por HeSVKEY_force () ahora refleja correctamente el UTF8ness del
clave hash subyacente cuando esa clave no se almacena como un SV. [perl # 79074]

· Algunas funciones y macros de uso poco frecuente disponibles para el código XS ahora están en desuso.
Estos son: "utf8_to_uvuni_buf" (use "utf8_to_uvchr_buf" en su lugar),
"valid_utf8_to_uvuni" (use "utf8_to_uvchr_buf" en su lugar), "NATIVE_TO_NEED" (esto hizo
no funciona correctamente de todos modos), y "ASCII_TO_NEED" (esto no funcionó correctamente de todos modos).

A partir de esta versión, casi nunca el código de la aplicación necesita distinguir
entre el juego de caracteres de la plataforma y Latin1, en el que los 256 caracteres más bajos de
Se basan en Unicode. El nuevo código no debe usar "utf8n_to_uvuni" (use "utf8_to_uvchr_buf"
en su lugar), ni "uvuni_to_utf8" (use "uvchr_to_utf8" en su lugar),

· Los destinos de acceso directo Makefile para muchas pruebas y perfiles que rara vez (o nunca) se utilizan
los objetivos se han eliminado o se han fusionado en el único otro objetivo de Makefile que utiliza
ellos. Específicamente, estos objetivos se han ido, junto con la documentación que hacía referencia
o explicó cómo usarlos:

comprobar.tercero comprobar.utf16 comprobar.utf8 coretest minitest.prep
minitest.utf16 perl.config.dashg perl.config.dashpg
perl.config.gcov perl.gcov perl.gprof perl.gprof.config
perl.pixie perl.pixie.atom perl.pixie.config perl.pixie.irix
perl.tercera perl.tercera.config perl.valgrind.config purecovperl
pureperl quantperl test.deparse test.taintwarn test.tercero
prueba.tortura prueba.utf16 prueba.utf8 prueba_notty.deparse
test_notty.tercero test_notty.valgrind test_prep.tercero
test_prep.valgrind torturatest ucheck ucheck.third ucheck.utf16
ucheck.valgrind utest utest.tercero utest.utf16 utest.valgrind

Todavía es posible ejecutar los comandos relevantes "a mano", sin subyacentes
se ha eliminado la funcionalidad.

· Ahora es posible evitar que Perl inicialice el manejo de locale. En la mayor parte,
Perl no presta atención a la configuración regional. (Ver perllocale.) No obstante, hasta ahora, en
inicio, siempre ha inicializado el manejo de la configuración regional al valor predeterminado del sistema, por si acaso
el programa que se está ejecutando termina usando locales. (Esta es una de las primeras cosas que
El programa que reconoce la configuración regional debería funcionar, mucho antes de que Perl sepa si realmente será necesario
o no.) Esto funciona bien excepto cuando Perl está incrustado en otra aplicación que
quiere una configuración regional que no sea la predeterminada del sistema. Ahora, si la variable de entorno
"PERL_SKIP_LOCALE_INIT" se establece en el momento en que se inicia Perl, este paso de inicialización
se omite. Antes de esto, en las plataformas Windows, la única solución para esto
La deficiencia era utilizar una copia pirateada del código interno de Perl. Aplicaciones que necesitan
para usar Perls más antiguos pueden descubrir si el Perl incrustado que están usando necesita el
solución alternativa probando que el símbolo del preprocesador de C "HAS_SKIP_LOCALE_INIT" no es
definido. [RT # 38193]

· Se han eliminado "BmRARE" y "BmPREVIOUS". No se utilizaron en ninguna parte y no se
parte de la API. Para los módulos XS, ahora están #definidos como 0.

· "Sv_force_normal", que normalmente croa en los valores de solo lectura, utilizado para permitir solo lectura
valores que se modificarán en tiempo de compilación. Esto se ha cambiado para croar en solo lectura
valores independientemente. Este cambio descubrió varios errores principales.

· El nuevo mecanismo de copia en escritura de Perl (que ahora está habilitado de forma predeterminada), permite cualquier
Escalar "SvPOK" para actualizarse automáticamente a un escalar de copia en escritura cuando se copia. A
el recuento de referencias en el búfer de cadena se almacena en el búfer de cadena en sí.

Por ejemplo:

$ perl -MDevel :: Peek -e '$ a = "abc"; $ b = $ a; Volcar $ a; Volcar $ b '
VS = PV(0x260cd80) at 0x2620ad8
REFCNT = 1
BANDERAS = (POK, IsCOW, pPOK)
PV = 0x2619bc0 "abc" \ 0
CUR = 3
LARGO = 16
VACA_REFCNT = 1
VS = PV(0x260ce30) at 0x2620b20
REFCNT = 1
BANDERAS = (POK, IsCOW, pPOK)
PV = 0x2619bc0 "abc" \ 0
CUR = 3
LARGO = 16
VACA_REFCNT = 1

Tenga en cuenta que ambos escalares comparten el mismo búfer PV y tienen un COW_REFCNT mayor que
cero.

Esto significa que el código XS que desee modificar el búfer "SvPVX ()" de un SV debe
llamar a "SvPV_force ()" o similar primero, para garantizar un búfer válido (y no compartido), y para
llame a "SvSETMAGIC ()" después. Este, de hecho, siempre ha sido el caso (por ejemplo
las claves hash ya estaban copiadas en escritura); este cambio solo extiende el comportamiento de la VACA a un
variedad más amplia de SV.

Una diferencia importante es que antes de 5.18.0, los escalares de clave hash compartidos solían tener
el conjunto de banderas "SvREADONLY"; este ya no es el caso.

Este nuevo comportamiento aún se puede deshabilitar ejecutando Configurar con
-Accflags = -DPERL_NO_COW. Esta opción probablemente se eliminará en Perl 5.22.

· "PL_sawampersand" ahora es una constante. El cambio que esta variable proporcionó (a
habilitar / deshabilitar la copia previa al partido dependiendo de si se ha visto $ &)
eliminado y reemplazado con copy-on-write, eliminando algunos errores.

El comportamiento anterior aún se puede habilitar ejecutando Configurar con
-Accflags = -DPERL_SAWAMPERSAND.

· Se han eliminado las funciones "my_swap", "my_htonl" y "my_ntohl". No está claro
por qué estas funciones se marcaron alguna vez como A, parte de la API. El código XS no puede llamarlos
directamente, ya que no puede confiar en que se compilen. Como era de esperar, no hay código en CPAN
hace referencia a ellos.

· La firma de la función de expresión regular "Perl_re_intuit_start ()" ha cambiado; la función
El puntero "intuit" en la estructura del complemento del motor de expresiones regulares también ha cambiado en consecuencia. A
se ha añadido un nuevo parámetro, "strbeg"; esto tiene el mismo significado que el mismo nombre
parámetro en "Perl_regexec_flags". Previamente intuit intentaría adivinar el inicio de
la cadena del SV pasado (si lo hubiera), y a veces se equivocaba (por ejemplo, con un
SV sobrecargado).

· La firma de la función de expresión regular "Perl_regexec_flags ()" ha cambiado; la función
El puntero "exec" en la estructura del complemento del motor de expresiones regulares también ha cambiado para coincidir. los
El parámetro "minend" ahora tiene el tipo "SSize_t" para soportar mejor los sistemas de 64 bits.

· El código XS puede usar varias macros para cambiar el caso de un carácter o punto de código (por
ejemplo "toLOWER_utf8 ()"). Solo un par de estos estaban documentados hasta ahora; y ahora
deben usarse en lugar de llamar a las funciones subyacentes. Ver "Personaje
cambio de caso "en perlapi.

· El código trataba de manera bastante inconsistente con uids y gids. Algunos lugares asumieron que
podría almacenarse de forma segura en UV, otros en IV, otros en ints. Cuatro nuevas macros son
introducido: SvUID (), sv_setuid (), SvGID ()y sv_setgid ()

· Se ha agregado "sv_pos_b2u_flags" a la API. Es similar a "sv_pos_b2u", pero
admite cadenas largas en plataformas de 64 bits.

· "PL_exit_flags" ahora puede ser utilizado por perl embedders u otro código XS para que perl "advierta"
o "abortar" en un intento de salida. [perl # 52000]

· Compilar con "-Accflags = -PERL_BOOL_AS_CHAR" ahora permite a los compiladores C99 y C ++
emular el alias de "bool" a "char" que perl hace para los compiladores de C89. [perl
# 120314]

· El argumento "sv" en "sv_2pv_flags" en perlapi, "sv_2iv_flags" en perlapi,
"sv_2uv_flags" en perlapi y "sv_2nv_flags" en perlapi y sus envoltorios más antiguos
sv_2pv, sv_2iv, sv_2uv, sv_2nv, ahora no es NULL. Pasar NULL ahora se bloqueará. Cuando
el marcador no NULL se introdujo en masa en 5.9.3 las funciones se marcaron como no
NULL, pero desde la creación de la API de SV en 5.0 alpha 2, si se pasa NULL, el
las funciones devolvieron 0 o valores de tipo falso. El código que admite el argumento "sv" es
fechas no NULL a 5.0 alpha 2 directamente e indirectamente a Perl 1.0 (api anterior a 5.0). los
falta de documentación de que las funciones aceptaran un NULL "sv" se corrigió en 5.11.0
y entre 5.11.0 y 5.19.5 las funciones se marcaron como NULLOK. Como optimización el
El código NULLOK ahora se ha eliminado y las funciones se volvieron a marcar como no NULL,
porque las macros de tipo getter del núcleo nunca pasan NULL a estas funciones y fallarían
antes de pasar NULL.

La única forma en que se puede pasar un "sv" NULL a las funciones sv_2 * v * es si el código XS se realiza directamente
llama sv_2 * v *. Esto es poco probable ya que el código XS usa macros Sv * V * para obtener el
valor fuera del SV. Una posible situación que lleva a que se pase un "sv" NULL a
sv_2 * v * funciones, es si el código XS define su propio tipo de captador macros Sv * V *, que verifican
para NULL antes desreferenciar y verificar las banderas de SV a través de API pública Sv * OK *
macros o directamente usando la API privada "SvFLAGS", y si "sv" es NULL, entonces llamar al
sv_2 * v funciona con un literal NULL o pasando el "sv" que contiene un valor NULL.

· NewATTRSUB ahora es una macro

La API pública newATTRSUB era anteriormente una macro de la función privada
Perl_newATTRSUB. Se ha eliminado la función Perl_newATTRSUB. newATTRSUB ahora es macro para
una función interna diferente.

· Cambios en las advertencias generadas por "utf8n_to_uvchr ()"

Esta función de nivel inferior decodifica el primer carácter de una cadena UTF-8 en un código
punto. Es accesible para el código de nivel "XS", pero no se recomienda su uso.
directamente. Hay funciones de nivel superior que llaman a esto y que deben usarse
en su lugar, como "utf8_to_uvchr_buf" en perlapi. Para completar, sin embargo, este
documenta algunos cambios. Ahora, las pruebas de malformaciones se realizan antes de cualquier prueba.
para otros problemas potenciales. Uno de esos problemas involucra puntos de código tan grandes que
nunca han aparecido en ningún estándar oficial (el estándar actual ha escalado
retrocede el punto de código más alto aceptable de versiones anteriores). Es posible (aunque
no hecho en CPAN) para advertir y / o prohibir estos puntos de código, aceptando
puntos de código que todavía están por encima del máximo legal de Unicode. El mensaje de advertencia para
esto ahora incluye el punto de código si se puede representar en la máquina. Anteriormente
siempre se muestran bytes sin procesar, que es lo que todavía hace con el código no representable
puntos.

· Cambios en el motor de expresiones regulares que afectan la interfaz del motor de expresiones regulares enchufable

Muchas banderas que solían estar expuestas a través de regexp.h y que se usaban para poblar las extflags
El miembro de struct regexp ha sido eliminado. Estos campos eran técnicamente privados para
El propio motor de expresiones regulares de Perl y no debería haber estado expuesto allí en primer lugar.

Las banderas afectadas son:

RXf_NOSCAN
RXf_CANY_SEEN
RXf_GPOS_SEEN
RXf_GPOS_FLOAT
RXf_ANCH_BOL
RXf_ANCH_MBOL
RXf_ANCH_SBOL
RXf_ANCH_GPOS

Además de las siguientes máscaras de bandera:

RXf_ANCH_SINGLE
RXf_ANCH

Todos han sido renombrados a equivalentes PREGf_ y movidos a regcomp.h.

El comportamiento logrado previamente al establecer una o más de las banderas RXf_ANCH_ (a través de
la máscara RXf_ANCH) ahora se han reemplazado por un bit de bandera * único * en extflags:

RXf_IS_ANCHORED

Los motores de expresiones regulares conectables que anteriormente solían establecer estos indicadores ahora deberían establecer esto
bandera SOLO.

· El núcleo de Perl ahora usa constantemente "av_tindex ()" ("el índice superior de una matriz") como un
sinónimo de nombre más claro para "av_len ()".

· Se espera que la variable intérprete oscura "PL_timesbuf" se elimine al principio del
5.21.x, por lo que Perl 5.22.0 no se lo proporcionará a los autores XS.
Si bien la variable todavía existe en 5.20.0, esperamos que esta advertencia anticipada de la
la depreciación ayudará a cualquiera que esté usando esa variable.

Seleccionado Error Correcciones


Regular Expresiones
· Se corrigió una pequeña cantidad de construcciones de expresiones regulares que podían fallar o fallar
perl cuando la cadena con la que se compara se asignó por encima de la línea de 2 GB en 32 bits
sistemas. [RT # 118175]

· Varias pérdidas de memoria que implican el análisis de la expresión regular "(? [...])"
La construcción ha sido arreglada.

· "(? [...])" ahora permite la interpolación de patrones precompilados que consisten en "(? [...])"
con clases de caracteres entre corchetes dentro ("$ pat = qr / (? [[a]]) /; / (? [$ pat]) /").
Anteriormente, los corchetes confundían al analizador de expresiones regulares.

· Podría aparecer el mensaje de advertencia "Cuantificador inesperado en expresión de longitud cero"
dos veces comenzando en Perl v5.10 para una expresión regular que también contiene alternancias
(por ejemplo, "a | b") activando la optimización del ensayo.

· Perl v5.18 introdujo inadvertidamente un error por el cual interpolar mezclados arriba y abajo-
Las cadenas UTF-8 graduadas en una expresión regular podrían dar como resultado UTF-8 con formato incorrecto en el patrón:
específicamente si un carácter degradado en el rango "\ x80 .. \ xff" siguió a un UTF-8
cadena, por ejemplo

utf8 :: actualización (mi $ u = "\ x {e5}");
utf8 :: downgrade (my $ d = "\ x {e5}");
/ $ u $ d /

[RT # 118297]

· En expresiones regulares que contienen múltiples bloques de código, los valores de $ 1, $ 2, etc.,
establecido por las llamadas de expresión regular anidadas se filtrarían de un bloque al siguiente. Ahora
estas variables siempre se refieren a la expresión regular externa al comienzo de una
bloque incrustado [perl # 117917].

· "/ $ Qr / p" se rompió en Perl 5.18.0; la bandera "/ p" fue ignorada. Esto ha sido arreglado.
[perl # 118213]

· A partir de Perl 5.18.0, una construcción como "/ [#] (? {}) / X" tendría su "#" incorrectamente
interpretado como un comentario. El bloque de código se omitiría, no se analizaría. Esto ha sido
corregido

· A partir de Perl 5.001, una expresión regular como "/ [# $ a] / x" o "/ [#] $ a / x" tendría
su "#" se interpretó incorrectamente como un comentario, por lo que la variable no se interpolaría.
Esto ha sido corregido. [perl # 45667]

· Perl 5.18.0 hizo inadvertidamente expresiones regulares desreferenciadas ("$ {qr //}") falsas como
booleanos. Esto ha sido arreglado.

· El uso de "\ G" en expresiones regulares, donde no está al comienzo del patrón, es
ahora un poco menos defectuoso (aunque todavía es algo problemático).

· Donde una expresión regular incluye bloques de código ("/(?{...})/"), y donde el uso de
La sobrecarga constante provocó una recompilación del bloque de código, el segundo
La compilación no vio su alcance léxico externo. Esta fue una regresión en Perl 5.18.0.

· La posición de la cadena establecida por "pos" podría cambiar si la cadena cambia de representación
internamente hacia o desde utf8. Esto podría suceder, por ejemplo, con referencias a objetos con
sobrecarga de cuerdas.

· Tomando referencias a los valores de retorno de dos llamadas "pos" con el mismo argumento, y
luego, asignar una referencia a uno y "undef" al otro, podría resultar en una afirmación
fallas o pérdidas de memoria.

· Los elementos de @ - y @ + ahora se actualizan correctamente cuando se refieren a capturas inexistentes.
Anteriormente, un elemento referenciado ("$ ref = \ $ - [1]") podía hacer referencia a una coincidencia incorrecta
después de partidos posteriores.

· El código que analiza regex backrefs (o backref / octals ambiguos) como \ 123 hizo un
simples atoi (), que podría redondearse a valores negativos en cadenas de dígitos largas y
Causar fallas de segmentación. Esto ahora ha sido arreglado. [perl # 119505]

· Asignar otro typeglob a "* ^ R" ya no hace que el motor de expresiones regulares
choque.

· El escape de expresión regular "\ N", cuando se usa sin las llaves (para significar
"[^ \ n]"), ignoraba un "*" siguiente si estaba seguido de un espacio en blanco debajo de / x. Tenía
sido así desde que "\ N" significa "[^ \ n]" se introdujo en 5.12.0.

· "S ///", "tr ///" e "y ///" ahora funcionan cuando se usa un carácter ancho como delimitador.
[perl # 120463]

· Algunos casos de secuencias no terminadas (? ...) en expresiones regulares (p. Ej., "/ (?
se han corregido para producir el mensaje de error adecuado en lugar de "pánico: ajuste de memoria".
Otros casos (por ejemplo, "/ (? (/") Aún no se han solucionado.

· Cuando se devolvió una referencia a una referencia a un objeto sobrecargado de un
expresión "(?? {...})" bloque de código, una desreferencia implícita incorrecta podría tener lugar
si la referencia interna había sido devuelta por un bloque de código previamente.

· Una variable vinculada devuelta de "(?? {...})" ve los valores internos de las variables de coincidencia
(es decir, el $ 1, etc. de cualquier coincidencia dentro del bloque) en su método FETCH. Esto era
no es el caso si una referencia a un objeto sobrecargado fue la última cosa asignada a la
variable atada. En cambio, las variables de coincidencia se referían al patrón externo durante la
FETCH llamar.

· Corrija la contaminación inesperada a través de expresiones regulares usando la configuración regional. Previamente, bajo ciertas condiciones,
el uso de clases de personajes podría causar contaminación cuando no debería. Algún personaje
las clases dependen de la configuración regional, pero antes de este parche, a veces ocurría la contaminación
incluso para clases de caracteres que no dependen de la configuración regional. [perl # 120675]

· Bajo ciertas condiciones, Perl arrojaría un error si en una aserción de búsqueda en una
regexp, la aserción se refería a un subpatrón con nombre, quejándose de que la búsqueda hacia atrás era
variable cuando no lo era. Esto ha sido arreglado. [perl # 120600], [perl # 120618]. El
La solución actual puede mejorarse en el futuro.

· $ ^ R no estaba disponible fuera de la expresión regular que lo inicializó. [perl
# 121070]

· Un gran conjunto de correcciones y refactorización para re_intuit_start () se fusionó, lo más destacado
son:

· Se corrigió un pánico al compilar la expresión regular "/ \ x {100} [xy] \ x {100} {2} /".

· Se corrigió una regresión de rendimiento al realizar una coincidencia de patrón global contra un
Cuerda UTF-8. [perl # 120692]

· Se solucionó otro problema de rendimiento en el que coincidir con una expresión regular como
"/ab.{1,2}x/" contra una cadena UTF-8 larga calcularía bytes innecesariamente
compensaciones para una gran parte de la cadena. [perl # 120692]

· Se corrigió un error de alineación al compilar expresiones regulares cuando se compilaba con GCC en HP-
UX de 64 bits.

· En plataformas de 64 bits, "pos" ahora se puede establecer en un valor superior a 2 ** 31-1. [perl
# 72766]

Perl 5 Depurador -d
· Se ha corregido el comando "man" del depurador. Se rompió en la versión v5.18.0. los
El comando "man" tiene el alias de los nombres "doc" y "perldoc"; ahora todos funcionan de nuevo.

· @_ ahora se ve correctamente en el depurador, lo que corrige una regresión introducida en
Depurador de v5.18.0. [RT # 118169]

· En compilaciones de copia al escribir (el valor predeterminado a partir de 5.20.0) "$ {'_ <- e'} [0]" ya no se
destrozado. Esta es la primera línea de entrada guardada para el uso del depurador para frases breves.
[perl # 118627].

· En compilaciones sin subprocesos, configurar "$ {" _
hace que "__FILE__" y algunos mensajes de error produzcan una cadena dañada, y ya no
evita que las directivas "#line" en las evaluaciones de cadenas proporcionen las líneas de origen al
depurador. Las compilaciones con subprocesos no se vieron afectadas.

· A partir de Perl 5.12, los números de línea estaban desviados en uno si el -d se usó el interruptor en el
#! línea. Ahora tienen razón.

· "* DB :: DB = sub {} if 0" ya no impide que el modo de depuración de Perl encuentre "DB :: DB"
subs declarados a partir de entonces.

· Los hash "% {'_ <...'}" ahora establecen puntos de interrupción en el correspondiente "@ {'_ <...'}" en lugar de
cualquiera que sea la matriz @DB :: dbline con alias. [perl # 119799]

· Llame a set-magic al configurar $ DB :: sub. [perl # 121255]

· El comando "n" del depurador ahora respeta las subrutinas lvalue y las supera [perl
# 118839].

Léxico Subrutinas
· Las constantes léxicas ("mi sub a () {42}") ya no se bloquean cuando están alineadas.

· Los prototipos de parámetros adjuntos a subrutinas léxicas ahora se respetan al compilar
sub llamadas sin paréntesis. Anteriormente, los prototipos solo eran reconocidos por
llamadas con paréntesis. [RT # 116735]

· Errores de sintaxis en subrutinas léxicas en combinación con llamadas a las mismas subrutinas
ya no causa bloqueos en tiempo de compilación.

· Las advertencias de recursividad profunda ya no bloquean las subrutinas léxicas. [RT # 118521]

· La sonda de subentrada dtrace ahora funciona con subs léxicos, en lugar de fallar [perl
# 118305].

· Indefinir una subrutina léxica inlinable ("my sub foo () {42} undef & foo")
provocaría un bloqueo si se activaban las advertencias.

· Un subléxico indefinido utilizado como método heredado ya no se bloquea.

· La presencia de un subléxico llamado "CORE" ya no detiene el prefijo CORE :: de
trabajando.

Todo otro
· El código de asignación de OP ahora devuelve la memoria alineada correctamente en todos los casos para "struct
pmop ". Anteriormente, podía devolver la memoria solo alineada con un límite de 4 bytes, que es
no es correcto para una compilación de subprocesos con IV de 64 bits en algunas plataformas de 32 bits. Notablemente,
esto provocó que la compilación fallara completamente en sparc GNU / Linux. [RT # 118055]

· Evaluar hash grandes en contexto escalar ahora es mucho más rápido, ya que la cantidad de hashes usados
Las cadenas en el hash ahora se almacenan en caché para valores hash más grandes. Los hash más pequeños continúan sin
guárdelo y calcúlelo cuando sea necesario, ya que esto ahorra un IV. Eso sería 1 IV
sobrecarga para cada objeto construido a partir de un hash. [RT # 114576]

· Perl v5.16 introdujo inadvertidamente un error por el cual las llamadas a XSUB que no eran visibles
en tiempo de compilación se trataron como valores l y podrían asignarse, incluso cuando el
subrutina no era un subvalor. Esto ha sido arreglado. [RT # 117947]

· En Perl v5.18.0 dualvars que tenían una cadena vacía para la parte de la cadena pero un valor distinto de cero
número de la parte numérica que comienza a tratarse como verdadero. En versiones anteriores
fueron tratados como falsos, teniendo prioridad la representación de cadena. El viejo
se ha restaurado el comportamiento. [RT # 118159]

· Desde Perl v5.12, inserción de constantes que anulan las palabras clave integradas del mismo
name había anulado "use subs", lo que provocó menciones posteriores de la constante para usar
en su lugar, la palabra clave incorporada. Esto ha sido arreglado.

· La advertencia producida por "-l $ handle" ahora se aplica a referencias IO y globs, no solo a
refs glob. Esa advertencia ahora también es UTF8-clean. [RT # 117595]

· "Eliminar $ ENV local {nonexistent_env_var}" ya no pierde memoria.

· "Sort" y "require" seguidos de una palabra clave con el prefijo "CORE ::" ahora trátelo como un
palabra clave y no como nombre de subrutina o módulo. [RT # 24482]

· A través de ciertos acertijos, es posible hacer que se libere el paquete actual.
Ciertos operadores ("bendecir", "restablecer", "abrir", "eval") no podían hacer frente y colapsaban.
Se han hecho más resistentes. [RT # 117941]

· Aplicar un alias a los identificadores de archivos a través de la asignación global a global no actualizaría el método interno
almacena en caché correctamente si existía un paquete con el mismo nombre que el identificador de archivo, lo que resulta en
en su lugar, las llamadas al método filehandle van al paquete. Esto ha sido arreglado.

· "./Configure -de -Dusevendorprefix" no fue el predeterminado. [RT # 64126]

· La advertencia "Es poco probable que se llegue a una declaración" se incluyó en perldiag como
Advertencia de categoría "exec", pero la categoría "sintaxis" la habilitó y deshabilitó. Sobre
por otro lado, la categoría "ejecutiva" controlaba su fatalidad. Ahora es completamente
manejado por la categoría "ejecutivo".

· La advertencia "La lista de reemplazo es más larga que la lista de búsqueda" para "tr ///" e "y ///" no
ya se produce en presencia de la bandera "/ c". [RT # 118047]

· La cadena de NV no se almacena en caché para que la configuración regional léxica controle
cadena de la coma decimal. [perl # 108378] [perl # 115800]

· Ha habido varias correcciones relacionadas con el manejo de configuraciones regionales de Perl. perl # 38193 fue
descrito anteriormente en "Cambios internos". También se corrigió # 118197, donde la raíz
(punto decimal) tenía que ser un carácter ASCII (que no funciona para algunos
idiomas no occidentales); y # 115808, en el que devolvió "POSIX :: setlocale ()" en caso de falla
un "indef" que no advirtió sobre no estar definido incluso si esas advertencias eran
habilitado

· Compilar un operador "dividido" cuyo tercer argumento es una constante nombrada que se evalúa a 0
ya no hace que cambie el valor de la constante.

· Una constante con nombre utilizada como segundo argumento para "indexar" ya no se convierte en una
cadena si es una referencia, expresión regular, dualvar, etc.

· Una constante nombrada que evalúa el valor indefinido utilizado como segundo argumento para
"index" ya no produce advertencias "no inicializadas" en tiempo de compilación. Todavía lo hará
producirlos en tiempo de ejecución.

· Cuando se devolvió un escalar de una subrutina en @INC, el escalar referenciado se
convertido mágicamente en una cosa IO, posiblemente dando como resultado errores de "copia extraña" si
ese escalar siguió utilizándose en otros lugares. Ahora Perl usa una copia interna del
escalar en su lugar.

· Ciertos usos del operador "ordenar" están optimizados para modificar una matriz en su lugar, como
"@a = ordenar @a". Durante la clasificación, la matriz se convierte en solo lectura. Si un bloque de clasificación
debería pasar a morir, entonces la matriz permanece como de solo lectura incluso fuera del "orden". Esta
ha sido arreglado.

· $ Ay $ b dentro de un bloque de clasificación tienen un alias de los argumentos reales para "clasificar", por lo que
se puede modificar a través de esas dos variables. Esto no siempre funcionó, por ejemplo, para
lvalue subs y $ # ary, y probablemente muchos otros operadores. Ahora funciona.

· Los argumentos para "ordenar" ahora están todos en el contexto de lista. Si el "género" en sí se llamara
en contexto vacío o escalar, entonces some, pero no todos, los argumentos solían ser nulos
o contexto escalar.

· Los prototipos de subrutinas con caracteres Unicode por encima de U + 00FF se estropearon durante
clonación de cierre. Esto sucedería con subrutinas cerrándose sobre variables léxicas.
declarado fuera, y con subtítulos léxicos.

· "UNIVERSAL :: can" ahora trata su primer argumento de la misma manera que lo hacen las llamadas a métodos:
Las referencias de tipo glob y glob con ranuras de E / S no vacías se tratan como identificadores y
las cadenas se tratan como identificadores de archivos, en lugar de paquetes, si un identificador con ese nombre
existe [perl # 113932].

· Llamadas a métodos en typeglobs (p. Ej., "* ARGV-> getline") que se utilizan para encadenar el typeglob y
luego búscalo de nuevo. Combinado con cambios en Perl 5.18.0, esto permitió "* foo-> bar"
para llamar a métodos en el paquete "foo" (como "foo-> bar"). En algunos casos, podría causar
el método que se llamará en el identificador incorrecto. Ahora, un argumento typeglob se trata como un
handle (como "(\ * foo) -> bar"), o, si su ranura de E / S está vacía, se genera un error.

· Asignar una vstring a una variable vinculada o a un argumento de subrutina con alias de un
hash inexistente o elemento de matriz ahora funciona, sin aplanar el vstring en un
cuerda regular.

· "Pos", "atar", "atar" y "desatar" no funcionaron correctamente en los argumentos de subrutina con alias
a elementos hash y de matriz inexistentes [perl # 77814, # 27010].

· El operador de flecha gruesa "=>" ahora puede citar palabras clave integradas incluso si ocurre en el
siguiente línea, haciéndolo coherente con la forma en que trata otras palabras básicas.

· La autovivificación de un stub de subrutina a través de "\ & $ glob" comenzó a causar fallas en Perl 5.18.0
si el $ glob era simplemente una copia de un glob real, es decir, un escalar que había tenido un glob
asignado a él. Esto ha sido arreglado. [perl # 119051]

· Perl solía filtrar un detalle de implementación cuando se trataba de hacer referencia a la devolución.
valores de ciertos operadores. "for ($ a + $ b) {advertir \ $ _; advertir \ $ _}" se usa para mostrar dos
diferentes direcciones de memoria, porque el operador "\" estaba copiando la variable. Bajo
compilaciones con subprocesos, también sucedería para las constantes ("for(1) {...} "). Esto ha sido
reparado. [perl # 21979, # 78194, # 89188, # 109746, # 114838, # 115388]

· El operador de rango ".." devolvía los mismos escalares modificables con cada llamada,
a menos que fuera lo único en un encabezado de bucle "foreach". Esto significó que los cambios a
Los valores dentro de la lista devuelta serían visibles la próxima vez que el operador fuera
ejecutado. [perl # 3105]

· El plegado constante y la alineación de subrutinas ya no provocan operaciones que
normalmente devuelve nuevos escalares modificables para devolver valores de solo lectura.

· Los cierres de la forma "sub () {$ alguna_variable}" ya no están en línea, lo que provoca
cambios en la variable para que sean ignorados por los llamadores de la subrutina. [perl # 79908]

· Los valores de retorno de ciertos operadores, como "ref", a veces se comparten entre
llamadas recursivas a la misma subrutina, lo que hace que la llamada interna modifique el valor
devuelto por "ref" en la llamada externa. Esto ha sido arreglado.

· "__PACKAGE__" y las constantes que devuelven un nombre de paquete o una clave hash ahora son consistentes
solo lectura. En varias versiones anteriores de Perl, se han vuelto mutables bajo ciertas
circunstancias.

· Habilitar las advertencias de "usado una vez" ya no provoca bloqueos en las circularidades ocultas creadas
en tiempo de compilación ("* Foo :: Bar :: Foo :: = * Foo ::").

· Las constantes undef utilizadas en las claves hash ("use constante u => undef; $ h {+ u}") ya no
producir advertencias "no inicializadas" en tiempo de compilación.

· La modificación de un objetivo de sustitución dentro del reemplazo de sustitución ya no causa
colisiones.

· La primera declaración dentro de una cadena eval utilizada para usar la configuración de pragma incorrecta
a veces durante el plegado constante. "eval 'uc chr 0xe0'" elegiría aleatoriamente entre
Semántica Unicode, byte y locale. Esto ha sido arreglado.

· El manejo de valores de retorno de filtros @INC (subrutinas devueltas por subrutinas en
@INC) se ha corregido de varias formas. Las variables previamente vinculadas se manejaron mal, y
establecer $ _ en una referencia o typeglob podría provocar bloqueos.

· Se ha corregido la función XS "SvPVbyte" para que funcione con escalares atados que regresan
algo que no sea una cuerda. Solía ​​devolver utf8 en aquellos casos en los que "SvPV"
haría.

· Perl 5.18.0 hizo que "-" y "++" se bloqueen inadvertidamente en un archivo regular desreferenciado
expresiones, y detuvo "++" de aplanar vstrings.

· "Bendecir" ya no muere con "No se puede bendecir el valor que no es de referencia" si su primer argumento es
una referencia ligada.

· "Restablecer" con un argumento ya no omite escalares de copia sobre escritura, expresiones regulares,
copias de typeglob y vstrings. Además, al encontrar esos valores o de solo lectura,
ya no omite ninguna matriz o hash con el mismo nombre.

· "Reset" con un argumento ahora omite escalares con alias de typeglobs ("para $ z (* foo) {
reset "z"} "). Anteriormente, dañaría la memoria o fallaría.

· "Ucfirst" y "lcfirst" no respetaban el pragma de bytes. Esta fue una regresión
de Perl 5.12. [perl # 117355]

· Los cambios en "UNIVERSAL :: DESTROY" ahora actualizan los cachés DESTROY en todas las clases, en lugar de
haciendo que las clases que ya han tenido objetos destruidos continúen usando el antiguo sub.
Esta fue una regresión en Perl 5.18. [perl # 114864]

· Todas las apariciones conocidas de falsos positivos de la advertencia de obsolescencia "Uso inútil de '\';
no escapa al metacarácter '% c' ", agregado en Perl 5.18.0, se han eliminado. [perl
# 119101]

· El valor de $ ^ E ahora se guarda en todos los controladores de señales en Windows. [perl # 85104]

· Un identificador de archivo léxico (como en "abrir mi $ fh ...") generalmente recibe un nombre basado en el
paquete actual y el nombre de la variable, por ejemplo, "main :: $ fh". En recursividad, el
filehandle estaba perdiendo la parte "$ fh" del nombre. Esto ha sido arreglado.

· Los valores no inicializados devueltos por XSUB ya no están exentos de no inicializados
advertencias. [perl # 118693]

· "Elsif (" ")" ya no produce erróneamente una advertencia sobre el contexto nulo. [perl
# 118753]

· Pasar "undef" a una subrutina ahora hace que @_ contenga el mismo undefined de solo lectura
escalar que devuelve "undef". Además, "existe $ _ [0]" ahora devolverá verdadero si
"undef" fue el primer argumento. [perl # 7508, # 109726]

· Pasar un elemento de matriz inexistente a una subrutina no suele autovivificarlo
a menos que la subrutina modifique su argumento. Esto no funcionó correctamente con
índices negativos y con elementos inexistentes dentro de la matriz. El elemento
ser vivificado inmediatamente. La vivificación retrasada se ha ampliado para trabajar con
aquellos. [perl # 118691]

· Asignar referencias o globs al escalar devuelto por $ # foo después de que la matriz @foo haya
liberado ya no causa fallas de afirmación en la depuración de compilaciones y pérdidas de memoria en
construcciones regulares.

· En plataformas de 64 bits, rangos grandes como 1..1000000000000 ya no se bloquean, sino que se comen
toda tu memoria en cambio. [perl # 119161]

· "__DATA__" ahora coloca el identificador "DATA" en el paquete correcto, incluso si el actual
El paquete ha sido renombrado mediante asignación global.

· Cuando "morir", "último", "siguiente", "rehacer", "ir a" y "salir" desenrollan el alcance, es posible
para "DESTROY" de forma recursiva para llamar a una subrutina o formato que se está
salido. En ese caso, a veces las variables léxicas dentro del sub empezarían
tener valores de la llamada externa, en lugar de estar indefinidos como deberían. Esta
ha sido arreglado. [perl # 119311]

· $ {^ MPEN} ya no se trata como sinónimo de $ {^ MATCH}.

· Perl ahora intenta un poco más para devolver el número de línea correcto en "(llamador) [2]".
[perl # 115768]

· Los números de línea dentro de los operadores de comillas de varias líneas ahora se informan correctamente. [perl
# 3643]

· Ahora se respetan las directivas "#line" dentro del código incrustado en operadores tipo comillas.

· Los números de línea ahora son correctos dentro del segundo here-doc cuando dos marcadores here-doc
ocurren en la misma línea.

· Una optimización en Perl 5.18 hizo suposiciones incorrectas causando una mala interacción con
el módulo Devel :: CallParser CPAN. Si el módulo se cargó, entonces las variables léxicas
declarada en declaraciones separadas después de una lista "my (...)" puede que no se borre en
salida del alcance.

· Las llamadas & xsub y "goto & xsub" ahora permiten que la subrutina llamada autovivifique elementos de
@_.

· & Xsub y "goto & xsub" ya no se bloquean si * _ no está definido y no tiene entrada ARRAY
(es decir, @_ no existe).

· & Xsub y "goto & xsub" ahora funcionan con atadas @_.

· Los identificadores demasiado largos ya no provocan un desbordamiento del búfer (y un bloqueo). Empezaron
haciéndolo en Perl 5.18.

· La advertencia "Valor escalar @hash {foo} mejor escrito como $ hash {foo}" ahora produce mucho
menos falsos positivos. En particular, @hash {+ function_returning_a_list} y @hash {qw
"foo bar baz"} ya no advierte. Lo mismo se aplica a los sectores de matriz. [perl # 28380,
# 114024]

· "$! = EINVAL; waitpid (0, WNOHANG);" ya no entra en un bucle infinito interno.
[perl # 85228]

· Se ha solucionado un posible error de segmentación en la duplicación de identificadores de archivos.

· Una subrutina en @INC puede devolver una referencia a un escalar que contiene la inicial
contenido del archivo. Sin embargo, ese escalar se liberó prematuramente si no se hace referencia
en otros lugares, dando resultados aleatorios.

· "Último" ya no devuelve valores que la misma declaración ha acumulado hasta ahora, lo que corrige
entre otras cosas, el error de larga data que "push @a, last" intentaría regresar
el @a, copiándolo como un escalar en el proceso y resultando en el error, "Bizarre
copia de ARRAY en último. "[perl # 3112]

· En algunos casos, los identificadores de archivo de cierre se abrieron para canalizar hacia o desde un proceso, que había
duplicado en un identificador estándar, llamaría al contenedor waitpid interno de perl
con un pid de cero. Con la corrección para [perl # 85228], este pid cero se pasó a
"waitpid", posiblemente bloqueando el proceso. Esta espera para el proceso cero ya no
ocurre. [perl # 119893]

· "Seleccionar" usado para ignorar la magia en el cuarto argumento (tiempo de espera), lo que genera efectos
como "seleccionar" el bloqueo indefinidamente en lugar del tiempo de suspensión esperado. Esto tiene
ahora ha sido arreglado. [perl # 120102]

· El nombre de la clase en "para mi clase $ foo" ahora se analiza correctamente. En el caso de
segundo carácter del nombre de la clase seguido de un dígito (por ejemplo, 'a1b'), esto se usa para
da el error "Falta $ en la variable de ciclo". [perl # 120112]

· Perl 5.18.0 rechazó accidentalmente "-bareword" en "use estricto" y "use integer".
Esto ha sido arreglado. [perl # 120288]

· "-A" al comienzo de una línea (o un guión con cualquier letra que no sea un archivo de prueba
operador) ya no produce un error 'El uso de "-a" sin paréntesis es
advertencia ambigua. [perl # 120288]

· El contexto de Lvalue ahora se propaga correctamente en bloques desnudos y bloques "if" y "else"
en subrutinas lvalue. Anteriormente, las matrices y los hashes a veces eran incorrectamente
se aplana cuando se devuelve en el contexto de la lista lvalue, o podrían producirse errores de "copia extraña".
[perl # 119797]

· El contexto Lvalue ahora se propaga a las ramas de "||" y "&&" (y su
equivalentes alfabéticos, "o" y "y"). Esto significa "foreach (pos $ x || pos $ y)
{...} "ahora permite modificar" pos "mediante $ _.

· "Stat" y "readline" recuerdan el último identificador utilizado; el primero para el especial "_"
filehandle, este último para "$ {^ LAST_FH}". "eval" * foo if 0 "" donde * foo fue el último
el identificador pasado a "stat" o "readline" podría hacer que ese identificador se olvide si el
la manija aún no se han abierto. Esto ha sido arreglado.

· Se han producido varios casos de "eliminar $ :: {a}", "eliminar $ :: {ENV}", etc.
reparado. [perl # 54044]

· Configuración de $! a EACCESS antes de llamar a "require" podría afectar el comportamiento de "require".
Esto ha sido arreglado.

· El mensaje de advertencia "No se puede usar \ 1 para significar $ 1 en la expresión" ahora solo aparece en
parte derecha (reemplazo) de una sustitución. Anteriormente podía suceder en código.
incrustado en el lado izquierdo, o en cualquier otro operador de cotización.

· La bendición en una referencia ("bendiga $ thisref, $ thatref") ha estado prohibida durante mucho tiempo, pero
escalares mágicos por el segundo como $ / y los empatados estaban exentos. Ellos ya no
son. [perl # 119809]

· La bendición en una referencia se permitió accidentalmente en 5.18 si el argumento de clase era
una referencia bendecida con cachés de métodos obsoletos (es decir, cuya clase tenía subs definidos
desde la última llamada al método). Se rechazan una vez más, como en 5.16.

· "$ X -> {clave}" donde $ x se declaró como "mi Clase $ x" ya no se bloquea si un
Se ha declarado el stub de subrutina de Class :: FIELDS.

· @ $ Obj {'key'} y "$ {$ obj} {key}" solían estar exentos de la verificación de campos en tiempo de compilación
("No existe tal clase de campo"; ver campos) pero ya no lo son.

· Un elemento de matriz inexistente con un índice grande pasado a una subrutina que ata el
array y luego intenta acceder al elemento ya no resulta en un bloqueo.

· Declarar un código auxiliar de subrutina llamado NEGATIVE_INDICES ya no crea una matriz negativa
los índices se bloquean cuando el paquete actual es una clase de matriz vinculada.

· Declarar un stub de subrutina "require", "glob" o "do" en el paquete CORE :: GLOBAL ::
ya no hace que la compilación de llamadas a las funciones correspondientes se bloquee.

· Aliasing CORE :: GLOBAL :: funciones a constantes dejó de funcionar en Perl 5.10 pero ha
ahora ha sido arreglado.

· Cuando "` ... `" o "qx /.../" llama a una anulación de "readpipe", interpolación de comillas dobles
ahora sucede, como es el caso cuando no hay anulación. Previamente, la presencia de un
anular haría que estos operadores de comillas actúen como "q {}", suprimiendo
interpolación. [perl # 115330]

· "<<<` ... `" here-docs (con comillas invertidas como delimitadores) ahora llama "readpipe" overrides.
[perl # 119827]

· "& CORE :: exit ()" y "& CORE :: die ()" ahora respetan las sugerencias de vmsish.

· La indefinición de un glob que activa un método DESTROY que no define el mismo glob ahora es
a salvo. Solía ​​producir advertencias de "Intento de liberar puntero glob sin referencia" y
pérdida de memoria.

· Si la redefinición de la subrutina ("eval 'sub foo {}'" o "newXS" para el código XS) activa un
DESTROY método en el sub que se está redefiniendo, y ese método asigna un
subrutina al mismo espacio ("* foo = sub {}"), $ _ [0] ya no se deja apuntando a un
escalar liberado. Ahora DESTROY se retrasa hasta que se haya instalado la nueva subrutina.

· En Windows, perl ya no llama Cerrar la manija () en un mango de enchufe. Esto hace
depuración más fácil en Windows al eliminar ciertas excepciones irrelevantes de malos manejadores. Eso
también corrige una condición de carrera que hacía que las funciones de socket fallaran aleatoriamente en un proceso de Perl
con múltiples subprocesos del sistema operativo y posibles fallas de prueba en
dist / IO / t / cachepropagate-tcp.t. [perl # 120091/118059]

· Formatos que involucran cadenas codificadas en UTF-8 o variables extrañas como ataduras, sobrecargas o
referencias en cadena (y en perls recientes, vars NOK puras) generalmente harían mal
cosa en formatos cuando la var se trata como una cadena y se corta repetidamente, como en
"^ <<< ~~" y similares. Esto ahora ha sido resuelto. [perl
#33832/45325/113868/119847/119849/119851]

· "Semctl (..., SETVAL, ...)" establecería el semáforo en los 32 bits superiores de la
entero en lugar de los 32 bits inferiores en sistemas big-endian de 64 bits. [perl # 120635]

· "Readdir ()" ahora solo establece $! por error. PS ya no se establece en "EBADF" cuando luego
la terminación "undef" se lee del directorio a menos que la llamada al sistema establezca $ !. [perl
# 118651]

· & CORE :: glob ya no causa un bloqueo intermitente debido a que la pila de perl se obtiene
corrupto. [perl # 119993]

· "Abrir" con capas que cargan módulos (por ejemplo, "<: codificación (utf8)") ya no ejecuta el
riesgo de fallar debido a la corrupción de la pila.

· Perl 5.18 rompió la carga automática a través de las llamadas al método "-> SUPER :: foo" al buscar AUTOLOAD
del paquete actual en lugar de la superclase del paquete actual. Esto ha sido
reparado. [perl # 120694]

· Un error de larga data que causa "do {} hasta CONSTANT", donde la constante es verdadera
valor, para leer la memoria no asignada se ha resuelto. Esto suele suceder después
un error de sintaxis. En versiones anteriores de Perl, se bloqueaba de forma intermitente. [perl # 72406]

· Repara HP-UX $! falla. HP-UX strerror () devuelve una cadena vacía para un error desconocido
código. Esto provocó que una aserción fallara en las compilaciones de DEPURACIÓN. Ahora en cambio, el
devolvió la cadena para "$!" contiene texto que indica que el código corresponde a un error desconocido.

· Los elementos de @INC vinculados individualmente (como en "tie $ INC [0] ...") ahora se manejan correctamente.
Anteriormente, si un sub devuelto por un elemento vinculado de este tipo se trataría como un sub
dependía de si se había producido un FETCH anteriormente.

· "Getc" en un identificador del tamaño de un byte después de que se haya usado el mismo operador "getc" en un utf8
identificador utilizado para tratar los bytes como utf8, lo que resulta en un comportamiento errático (por ejemplo, malformado
Advertencias UTF-8).

· Una "{" inicial al principio de una línea de argumento de formato siempre se interpretó como
el comienzo de un bloque anterior a v5.18. En Perl v5.18, comenzó a tratarse como
una ficha ambigua. El analizador adivinaría si se suponía que era un anónimo
constructor hash o un bloque basado en el contenido. Ahora el comportamiento anterior tiene
sido restaurado. [perl # 119973]

· En Perl v5.18, "undef * _; goto & sub" y "local * _; goto & sub" comenzaron a fallar. Esta
ha sido arreglado. [perl # 119949]

· Las comillas inversas ("` `" o "qx //") combinadas con varios subprocesos en Win32 podrían resultar en
salida enviada a stdout en un hilo siendo capturada por comillas invertidas de un comando externo
en otro hilo.

Esto también podría ocurrir para procesos pseudo-bifurcados, ya que la pseudo-bifurcación de Win32 es
implementado en términos de subprocesos. [perl # 77672]

· "Open $ fh,"> + ", undef" ya no pierde memoria cuando se establece TMPDIR, pero apunta a un
directorio en el que no se puede crear un archivo temporal. [perl # 120951]

· "For ($ h {k} || '')" ya no vivifica automáticamente $ h {k}. [perl # 120374]

· En máquinas con Windows, Perl ahora emula el uso POSIX del entorno para la configuración regional.
inicialización. Anteriormente, se ignoraba el medio ambiente. Consulte "MEDIO AMBIENTE" en
perlocale.

· Se corrigió un bloqueo al destruir un GLOB autorreferencial. [perl # 121242]

Conocido Problemas


· IO :: Socket es conocido por fallar las pruebas en AIX 5.3. Hay un parche
en el rastreador de solicitudes, # 120835,
que se puede aplicar a versiones futuras.

· Se sabe que los siguientes módulos tienen fallas de prueba con esta versión de Perl.
Se han enviado parches, por lo que es de esperar que haya nuevos lanzamientos pronto:

· Datos :: Estructura :: Util versión 0.15

· HTML :: StripScripts versión 1.05

· Lista :: Reúna la versión 0.08.

Obituario


Diana Rosa, de 27 años, de Río de Janeiro, se fue a su descanso prolongado el 10 de mayo de 2014, junto con el
camello de felpa que mantenía colgado en la pantalla de su computadora todo el tiempo. Ella era una apasionada
Hacker de Perl que amaba el idioma y su comunidad, y que nunca se perdió un evento de Rio.pm.
Ella era una verdadera artista, una entusiasta de escribir código, cantar arias y hacer graffitis.
paredes Nunca te olvidaremos.

Greg McCarroll murió el 28 de agosto de 2013.

Greg era bien conocido por muchas buenas razones. Fue uno de los organizadores de la primera
YAPC :: Europa, que concluyó con una subasta no programada en la que trató frenéticamente de
Reúna dinero extra para evitar pérdidas en la conferencia. Fue Greg quien por error
llegó a una reunión de london.pm con una semana de retraso; unos años después fue él quien vendió el
elección de la fecha de reunión oficial en una subasta de YAPC :: Europa y, finalmente, tan gloriosa
líder de london.pm llegó a heredar la confusión irreverente que había creado.

Siempre servicial, amigable y alegremente optimista, lo extrañaremos, pero nunca
olvidado.

Agradecimientos


Perl 5.20.0 representa aproximadamente 12 meses de desarrollo desde Perl 5.18.0 y
contiene aproximadamente 470,000 líneas de cambios en 2,900 archivos de 124 autores.

Excluyendo los archivos generados automáticamente, la documentación y las herramientas de publicación, hubo aproximadamente
280,000 líneas de cambios en archivos 1,800 .pm, .t, .cy .h.

Perl continúa floreciendo en su tercera década gracias a una vibrante comunidad de usuarios.
y desarrolladores. Se sabe que las siguientes personas han contribuido a las mejoras que
se convirtió en Perl 5.20.0:

Aaron Crane, Abhijit Menon-Sen, Abigail, Abir Viqar, Alan Haggai Alavi, Alan Hourihane,
Alexander Voronov, Alexandr Ciornii, Andy Dougherty, Anno Siegel, Aristóteles Pagaltzis,
Arthur Axel 'fREW' Schmidt, Brad Gilbert, Brendan Byrd, Brian Childs, Brian Fraser, Brian
Gottreu, Chris 'BinGOs' Williams, Christian Millour, Colin Kuskie, Craig A. Berry, Dabrien
'Dabe' Murphy, Dagfinn Ilmari Mannsaaker, Daniel Dragan, Darin McBride, David Golden,
David Leadbeater, David Mitchell, David Nicol, David Steinbrunner, Dennis Kaarsemaker,
Dominic Hargreaves, Ed Avis, Eric Brine, Evan Zacks, Padre Chrysostomos, Florian Ragwitz,
Francois Perrad, Gavin Shelley, Gideon Israel Dsouza, Gisle Aas, Graham Knop, H. Merijn
Marca, Hauke ​​D, Heiko Eissfeldt, Hiroo Hayashi, Hojung Youn, James E Keenan, Jarkko
Hietaniemi, Jerry D. Hedden, Jess Robinson, Jesse Luehrs, Johan Vromans, John Gardiner
Myers, John Goodyear, John P. Linderman, John Peacock, Kafka, Kang-min Liu, Karen
Etheridge, Karl Williamson, Keedi Kim, Kent Fredric, Kevin Dawson, Kevin Falcone, Kevin
Ryde, Leon Timmermans, Lukas Mai, Marc Simpson, Marcel Gruenauer, Marco Peereboom, Marcus
Holland-Moritz, Mark Jason Dominus, Martin McGrath, Matthew Horsfall, Max Maischein y Mike
Doherty, Moritz Lenz, Nathan Glenn, Nathan Trapuzzano, Neil Bowers, Neil Williams,
Nicholas Clark, Niels Thykier, Niko Tyni, Olivier Mengue, Owain G. Ainsworth, Paul Green,
Paul Johnson, Peter John Acklam, Peter Martini, Peter Rabbitson, Petr PisaX, Philip
Boulain, Philip Guenther, Piotr Roszatycki, Rafael García-Suarez, Reini Urban, Reuben
Thomas, Ricardo Signes, Ruslan Zakirov, Sergey Alekseev, Shirakata Kentaro, Shlomi Fish,
Slaven Rezic, Smylers, Steffen Mueller, Steve Hay, Sullivan Beck, Thomas Sibley y Tobias
Leich, Toby Inkster, Tokuhiro Matsuno, Tom Christiansen, Tom Hukins, Tony Cook, Víctor
Efimov, Viktor Turskyi, Vladimir Timofeev, YAMASHINA Hio, Yves Orton, Zefram, Zsban
Ambrus, AEvar Arnfjoer` Bjarmason.

Es casi seguro que la lista anterior esté incompleta, ya que se genera automáticamente a partir de
historial de control de versiones. En particular, no incluye los nombres de los (mucho
apreciado) contribuyentes que informaron problemas al rastreador de errores de Perl.

Muchos de los cambios incluidos en esta versión se originaron en los módulos CPAN incluidos en
El núcleo de Perl. Agradecemos a toda la comunidad de CPAN por ayudar a Perl a prosperar.

Para obtener una lista más completa de todos los contribuyentes históricos de Perl, consulte la AUTORES
archivo en la distribución fuente de Perl.

Informes Errores


Si encuentra lo que cree que es un error, puede consultar los artículos publicados recientemente en
comp.lang.perl.misc newsgroup y la base de datos de errores de perl en http://rt.perl.org/perlbug/ .
También puede haber información en http://www.perl.org/ , la página de inicio de Perl.

Si cree que tiene un error no informado, ejecute el programa perlbug incluido con
tu liberación. Asegúrese de reducir su error a un caso de prueba pequeño pero suficiente. Tu error
informe, junto con la salida de "perl -V", se enviará a [email protected] para ser
analizado por el equipo de portabilidad de Perl.

Si el error que está informando tiene implicaciones de seguridad, lo que hace que sea inapropiado
envíelo a una lista de correo archivada públicamente, luego envíelo a
[email protected]. Esto apunta a un envío de correo no archivado de suscripción cerrada
lista, que incluye a todos los principales comprometidos, que podrán ayudar a evaluar el impacto
de problemas, encontrar una solución y ayudar a coordinar el lanzamiento de parches para
mitigar o solucionar el problema en todas las plataformas en las que se admite Perl. Solo por favor
use esta dirección para problemas de seguridad en el núcleo de Perl, no para módulos de forma independiente
distribuido en CPAN.

Use perl5200delta en línea usando los servicios de onworks.net


Servidores y estaciones de trabajo gratuitos

Descargar aplicaciones de Windows y Linux

  • 1
    pase de autorización
    pase de autorización
    AuthPass es una contraseña de código abierto
    gerente con apoyo para los populares y
    Keepass probado (kdbx 3.xy kdbx 4.x ...
    Descargar authpass
  • 2
    Zabbix
    Zabbix
    Zabbix es una clase empresarial abierta
    solución de monitoreo distribuido de origen
    diseñado para monitorear y rastrear
    rendimiento y disponibilidad de la red
    servidores, dispositivo...
    Descargar Zabbix
  • 3
    KDiff3
    KDiff3
    Este repositorio ya no se mantiene
    y se conserva con fines de archivo. Ver
    https://invent.kde.org/sdk/kdiff3 for
    el código más nuevo y
    https://download.kde.o...
    Descargar KDiff3
  • 4
    Cargador USBGX
    Cargador USBGX
    USBLoaderGX es una GUI para
    Cargador USB de Waninkoko, basado en
    libwiigui. Permite listar y
    lanzar juegos de Wii, juegos de Gamecube y
    homebrew en Wii y WiiU...
    Descargar USB Loader GX
  • 5
    Firebird
    Firebird
    Firebird RDBMS ofrece funciones ANSI SQL
    y se ejecuta en Linux, Windows y
    varias plataformas Unix. Características
    excelente concurrencia y rendimiento
    & energía...
    Descargar pájaro de fuego
  • 6
    KompoZer
    KompoZer
    KompoZer es un editor HTML wysiwyg que utiliza
    el código base de Mozilla Composer. Como
    El desarrollo de Nvu se ha detenido.
    en 2005, KompoZer corrige muchos errores y
    agrega una f...
    Descargar KompoZer
  • Más "

Comandos de Linux

Ad