GoGPT Best VPN GoSearch

icono de página de OnWorks

perl581delta - Online en la nube

Ejecute perl581delta 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 perl581delta 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


perl581delta: novedades de perl v5.8.1

DESCRIPCIÓN


Este documento describe las diferencias entre la versión 5.8.0 y la versión 5.8.1.

Si está actualizando desde una versión anterior como 5.6.1, primero lea perl58delta,
que describe las diferencias entre 5.6.0 y 5.8.0.

En caso de que se esté preguntando acerca de la versión 5.6.1, la solución de errores fue bastante idéntica a la
versión de desarrollo 5.7.1. ¿Confundido? Es de esperar que esta línea de tiempo ayude un poco: enumera los
nuevas versiones principales, sus versiones de mantenimiento y las versiones de desarrollo.

Nuevo desarrollo de mantenimiento

5.6.0 2000 de marzo de 22
5.7.0 2000-septiembre-02
5.6.1 2001-abril-08
5.7.1 2001-abril-09
5.7.2 2001-jul-13
5.7.3 2002 de marzo de 05
5.8.0 2002-jul-18
5.8.1 2003-septiembre-25

Incompatible Cambios


Hash Aleatorización
Principalmente por razones de seguridad, el "orden aleatorio" de los hash se ha hecho aún más
aleatorio. Anteriormente, mientras que el orden de los elementos hash de llaves(), valores () y cada() iba
esencialmente aleatorio, seguía siendo repetible. Ahora, sin embargo, el orden varía entre
diferentes ejecuciones de Perl.

Perl tiene nunca garantia cualquier pedido of la hachís claves, y el pedido ya ha
cambiado varias veces durante la vida útil de Perl 5. Además, el orden de las claves hash ha
siempre ha sido y sigue siendo afectado por la orden de inserción.

La aleatoriedad agregada puede afectar las aplicaciones.

Un escenario posible es cuando la salida de una aplicación incluye datos hash. Para
ejemplo, si ha utilizado el módulo Data :: Dumper para volcar datos en diferentes archivos, y
luego comparó los archivos para ver si los datos han cambiado, ahora tendrá falso
positivos, ya que variará el orden en el que se vuelcan los hashes. En general, la cura es
ordenar las claves (o los valores); en particular para Data :: Dumper para usar las "Sortkeys"
opción. Si algún orden en particular es realmente importante, use hash vinculados: por ejemplo, el
Tie :: módulo IxHash que por defecto preserva el orden en el que los elementos hash fueron
añadido.

Un problema más sutil es la dependencia del orden de "destrucción global". Eso es lo que
ocurre al final de la ejecución: Perl destruye todas las estructuras de datos, incluidos los datos del usuario.
Si sus destructores (las subrutinas DESTROY) han asumido algún orden particular al
destrucción global, podría haber problemas por delante. Por ejemplo, en un destructor de uno
objeto no puede asumir que los objetos de cualquier otra clase todavía están disponibles, a menos que usted
mantenga una referencia a ellos. Si la variable de entorno PERL_DESTRUCT_LEVEL se establece en un
valor distinto de cero, o si Perl está saliendo de un hilo generado, también destruirá el ordinario
referencias y tablas de símbolos que ya no se utilizan. No puedes llamar a un método de clase
o una función ordinaria en una clase que se ha recopilado de esa manera.

La aleatorización hash seguramente revelará suposiciones ocultas sobre algunos
ordenamiento de elementos hash y errores absolutos: reveló algunos errores en el núcleo de Perl y
módulos centrales.

Para deshabilitar la aleatorización de hash en tiempo de ejecución, configure la variable de entorno PERL_HASH_SEED
a 0 (cero) antes de ejecutar Perl (para obtener más información, consulte "PERL_HASH_SEED" en perlrun), o
para deshabilitar la función por completo en tiempo de compilación, compile con "-DNO_HASH_SEED" (consulte
INSTALAR).

Consulte "Ataques de complejidad algorítmica" en perlsec para conocer la justificación original detrás de esto.
a través del cambio.

UTF-8 On Manijas de archivo No Más Activado By Lugar
En Perl 5.8.0, todos los identificadores de archivo, incluidos los identificadores de archivo estándar, se establecieron implícitamente en
estar en Unicode UTF-8 si la configuración regional indica el uso de UTF-8. Esta característica
causó demasiados problemas, por lo que la función se desactivó y se rediseñó: consulte "Core
Mejoras ".

Un solo numero cuerdas en V están no longer cuerdas en V antes "=>"
La función de cadenas de versión o cadenas en v (consulte "Cadenas de versión" en perldata) introducida en
Perl 5.6.0 ha sido una fuente de confusión, especialmente cuando el usuario no quería
úselo, pero Perl pensó que sabía mejor. Especialmente problemática ha sido la característica que
antes de que un "=>" una cadena de versión (una "v" seguida de dígitos) se haya interpretado como un
v-string en lugar de un literal de cadena. En otras palabras:

% h = (v65 => 42);

ha significado desde Perl 5.6.0

% h = ('A' => 42);

(al menos en plataformas de progenie ASCII) Perl 5.8.1 restaura el más natural
Automática

% h = ('v65' => 42);

Las cadenas en v de varios números como v65.66 y 65.66.67 siguen siendo cadenas en v en Perl
5.8.

(Ganar32) La pestaña -C Interruptor Tiene Ha sido Reutilizado
El interruptor -C ha cambiado de forma incompatible. La antigua semántica de este cambio solamente.
tenía sentido en Win32 y solo en el universo "use utf8" en las versiones 5.6.x, y no hace
sentido para la implementación Unicode en 5.8.0. Dado que este interruptor no se pudo haber utilizado
por cualquiera, ha sido reutilizado. El comportamiento que este conmutador habilitó en 5.6.x
Las versiones pueden ser compatibles de forma transparente y dependiente de los datos en una versión futura.

Para conocer la nueva vida de este conmutador, consulte "UTF-8 ya no está predeterminado en las configuraciones regionales UTF-8", y
"-C" en perlrun.

(Ganar32) La pestaña /d Interruptor Of cmd.exe
Perl 5.8.1 usa el modificador / d cuando se ejecuta el shell cmd.exe internamente para sistema(),
comillas inversas, y al abrir conductos a programas externos. El interruptor adicional desactiva la
ejecución de comandos AutoRun desde el registro, que generalmente se considera indeseable
al ejecutar programas externos. Si desea mantener la compatibilidad con los antiguos
comportamiento, establezca PERL5SHELL en su entorno en "cmd / x / c".

Nuestras Complementos


UTF-8 no longer la página predeterminada bajo UTF-8 locales
En Perl 5.8.0 se introdujeron muchas características Unicode. Uno de ellos resultó ser de más
molestia que beneficio: la "UTF-8-ificación" automágica (y silenciosa) de los identificadores de archivos,
incluidos los identificadores de archivo estándar, si la configuración regional del usuario indicaba el uso de UTF-8.

Por ejemplo, si tenía "en_US.UTF-8" como su configuración regional, su STDIN y STDOUT eran
automáticamente "UTF-8", en otras palabras, se hizo un binmode implícito (..., ": utf8"). Esta
significaba que tratar de imprimir, digamos, chr(0xff), terminó imprimiendo los bytes 0xc3 0xbf. Difícilmente
lo que tenía en mente a menos que estuviera al tanto de esta característica de Perl 5.8.0. El problema es
que la gran mayoría de la gente no lo estaba: por ejemplo, en las versiones 8 y 9 de RedHat,
la página predeterminada La configuración regional es UTF-8, por lo que todos los usuarios de RedHat obtuvieron identificadores de archivos UTF-8, ya sea que
lo quisiera o no. El dolor se intensificó con la implementación Unicode de Perl 5.8.0
(aún) teniendo errores desagradables, especialmente relacionados con el uso de s /// y tr ///. (Errores que
se han corregido en 5.8.1)

Por lo tanto, se tomó la decisión de dar marcha atrás a la función y cambiarla del silencio implícito.
por defecto a la opción consciente explícita. La nueva opción de línea de comandos de Perl "-C" y su
La variable de entorno de contraparte PERL_UNICODE ahora se puede usar para controlar cómo Perl y
Unicode interactúa en interfaces como E / S y, por ejemplo, los argumentos de la línea de comandos. Ver
"-C" en perlrun y "PERL_UNICODE" en perlrun para obtener más información.

Inseguro señales de nuevo estará disponible
En Perl 5.8.0 se introdujeron las llamadas "señales seguras". Esto significa que Perl no
ya maneja las señales inmediatamente, pero en cambio "entre códigos de operación", cuando es seguro hacerlo
entonces. El manejo inmediato anterior fácilmente podría corromper el estado interno de Perl,
resultando en accidentes misteriosos.

Sin embargo, el nuevo modelo más seguro también tiene sus problemas. Porque ahora un código de operación, una unidad básica de
La ejecución de Perl, nunca se interrumpe, sino que se deja ejecutar hasta su finalización, cierto
las operaciones que pueden llevar mucho tiempo ahora realmente llevan mucho tiempo. Por ejemplo, ciertos
Las operaciones de red tienen sus propios mecanismos de bloqueo y tiempo de espera, y pueden
interrumpirlos de inmediato sería bueno.

Por lo tanto, perl 5.8.1 introduce una "puerta trasera" para restaurar la versión anterior a 5.8.0 (anterior a 5.7.3, en realidad)
comportamiento de la señal. Simplemente establezca la variable de entorno PERL_SIGNALS en "inseguro", y la antigua
retornos inmediatos (e inseguros) del comportamiento de manejo de señales. Ver "PERL_SIGNALS" en perlrun
y "Señales diferidas (señales seguras)" en perlipc.

En noticias completamente ajenas, ahora puede usar señales seguras con POSIX :: SigAction. Ver
"POSIX :: SigAction" en POSIX.

Atado Matrices con Negativo Formación Indices
Anteriormente, los índices pasaban a los métodos "FETCH", "STORE", "EXISTS" y "DELETE" en los métodos vinculados
Las clases de matriz siempre fueron no negativas. Si el argumento real fuera negativo, Perl
llame a FETCHSIZE implícitamente y agregue el resultado al índice antes de pasar el resultado al
método de matriz atada. Este comportamiento ahora es opcional. Si la clase de matriz vinculada contiene un
variable de paquete denominada $ NEGATIVE_INDICES que se establece en un valor verdadero, valores negativos
se pasará a "FETCH", "STORE", "EXISTS" y "DELETE" sin cambios.

local $ {$ x}
Las sintaxis

$ {$ x} locales
local @ {$ x}
% local {$ x}

ahora localice las variables, dado que $ x es un nombre de variable válido.

Unicode Caracter Database 4.0.0
La copia de la base de datos de caracteres Unicode incluida en Perl 5.8 se ha actualizado a 4.0.0
desde 3.2.0. Esto significa, por ejemplo, que las propiedades de los caracteres Unicode son como en
Unicódigo 4.0.0.

Deprecación Advertencias
Hay una nueva función en desuso. Perl 5.8.0 olvidó agregar algunas advertencias de obsolescencia,
ahora se han agregado estas advertencias. Finalmente, un recordatorio de la inminente eliminación de una función.

(Recordatorio) Pseudo-hashes están (De Verdad)

Los pseudo-hashes quedaron obsoletos en Perl 5.8.0 y se eliminarán en Perl 5.10.0, consulte
perl58delta para más detalles. Cada intento de acceder a pseudo-hashes activará la advertencia
"Los pseudo-hashes están en desuso". Si realmente desea continuar usando pseudo-hashes pero
para no ver las advertencias de obsolescencia, utilice:

no hay advertencias 'obsoletas';

O puede continuar usando los campos pragma, pero no espere las estructuras de datos
para ser pseudohashes más.

(Recordatorio) 5.005 de estilo threads están (De Verdad)

Los hilos de estilo 5.005 (activados por "use Thread;") quedaron obsoletos en Perl 5.8.0 y serán
eliminado después de Perl 5.8, consulte perl58delta para obtener más detalles. Cada creación de hilo de estilo 5.005
activará la advertencia "5.005 subprocesos están obsoletos". Si de verdad quieres continuar
usando los hilos 5.005 pero no para ver las advertencias de desaprobación, use:

no hay advertencias 'obsoletas';

(Recordatorio) La pestaña $* variable is (De Verdad)

La variable $ * que controla la coincidencia de varias líneas ha quedado obsoleta y se eliminará
después de 5.8. La variable ha estado en desuso durante mucho tiempo y una advertencia de desuso
Se indica "El uso de $ * está en desuso", ahora la variable finalmente se eliminará. El
la funcionalidad ha sido suplantada por los modificadores "/ s" y "/ m" en la coincidencia de patrones. Si
realmente desea continuar usando la variable $ * - pero no ver las advertencias de obsolescencia,
utilizar:

no hay advertencias 'obsoletas';

Misceláneos Complementos
"mapa" en contexto vacío ya no es caro. "mapa" ahora reconoce el contexto y no
construya una lista si se llama en contexto vacío.

Si el servidor cierra un socket mientras imprime en él, el cliente ahora obtiene un SIGPIPE.
Si bien esta nueva característica no se planeó, naturalmente se eliminó de los cambios de PerlIO, y debe
ser considerado una característica accidental.

PerlIO :: get_layers (FH) devuelve los nombres de las capas de PerlIO activas en un identificador de archivo.

PerlIO :: via layer ahora puede tener un método UTF8 opcional para indicar si la capa
quiere "auto-: utf8" la secuencia.

utf8 :: is_utf8 () se ha agregado como una forma rápida de probar si un escalar está codificado
internamente en UTF-8 (Unicode).

Módulos y Pragmático


Actualizado Módulos Y Pragmático
Los siguientes módulos y pragmata se han actualizado desde Perl 5.8.0:

bases
B :: Bytecode
En mucho mejor estado de lo que solía estar. Todavía está lejos de ser perfecto, pero tal vez valga la pena
tratar.

B :: Conciso
B :: Deparse

Una función opcional, ": hireswallclock", ahora permite un reloj de pared de alta resolución
veces (usa Time :: HiRes).

cargador de bytes
Ver B :: Bytecode.

bytes
Ahora tiene bytes :: substr.

CGI
nombres de caracteres
Ahora se pueden tener alias de nombres de personajes personalizados.

CPAN
Ahora hay una interfaz de línea de comando simple para el módulo CPAN.pm llamado cpan.

Datos :: Dumper
Una nueva opción, Pair, permite elegir el separador entre claves hash y valores.

DB_Archivo
Desarrollo :: PPPort
Resumen :: MD5
Codificar
Actualizaciones significativas en la funcionalidad pragma de codificación (tr /// y DATA
identificador de archivo, formatos).

Si un identificador de archivo se ha marcado para tener una codificación, los caracteres no asignables se
detectado ya durante la entrada, no más tarde (cuando se están utilizando los datos corruptos).

Se corrigió la tabla de conversión ISO 8859-6 (el 0x30..0x39 se asignó erróneamente
a U + 0660..U + 0669, en lugar de U + 0030..U + 0039). La conversión GSM 03.38 no
manejar las secuencias de escape correctamente. Se ha agregado la codificación UTF-7 (haciendo que Encode
feature-complete con Unicode :: String).

campos
biblioteca
Matemáticas :: BigInt
Se han corregido muchos errores desde v1.60, la versión incluida en Perl v5.8.0.
Especialmente digno de mención es el error en Calc que causó que div y mod fallaran para algunos
valores grandes y correcciones para el manejo de entradas incorrectas.

Se agregaron algunas características nuevas, por ejemplo, el broot () método, ahora puede pasar parámetros a
config () para cambiar algunas configuraciones en tiempo de ejecución, y ahora es posible interceptar el
creación de NaN e infinito.

Como de costumbre, se llevaron a cabo algunas optimizaciones que hicieron que las matemáticas en general fueran un poco más rápidas. En
algunos casos, de hecho, mucho más rápido. Especialmente bibliotecas alternativas como
Math :: BigInt :: GMP se beneficia de esto. Además, muchas de las rutinas bastante torpes
como uno fsqrt () y azotar() ahora son mucho más rápidos.

MIME :: Base64
SIGUIENTE
La herencia de diamantes ahora funciona.

Red :: Ping
PerlIO :: escalar
La lectura de escalares que no son cadenas (como las variables especiales, ver perlvar) ahora funciona.

podadores
Pod :: LaTeX
PodParsers
Vaina :: Perldoc
Reescritura completa. Como efecto secundario, ya no se niega a iniciarse cuando lo ejecuta root.

Escalar :: Util
Nuevas utilidades: refaddr, isvstring, looks_like_number, set_prototype.

Almacenable
Ahora puede almacenar referencias de código (a través de B :: Deparse, por lo que no es infalible).

estricto
Las versiones anteriores del pragma estricto no verificaban los parámetros pasados ​​implícitamente
a su rutina "importar" (usar) y "no importar" (no). Esto provocó que el falso modismo
como:

use qw estricto (@ISA);
@ISA = qw (Foo);

Sin embargo, esto (probablemente) generó la falsa expectativa de que los estrictos refs, vars y
se estaban aplicando suscripciones (y que @ISA fue "declarado" de alguna manera). Pero los árbitros estrictos,
vars y subs son no sea se aplica cuando se usa este falso modismo.

A partir de Perl 5.8.1, lo anterior will provocar un error. Esto puede causar
programas que solían ejecutarse aparentemente correctamente sin advertencias y errores para fallar
cuando se ejecuta bajo 5.8.1. Esto sucede porque

use qw estricto (@ISA);

ahora fallará con el error:

Etiquetas 'estrictas' desconocidas '@ISA'

El remedio a este problema es reemplazar este código con el idioma correcto:

uso estricto
use vars qw (@ISA);
@ISA = qw (Foo);

Término :: ANSIcolor
Prueba :: Arnés
Ahora es mucho más exigente con la salida extra o faltante de los scripts de prueba.

Prueba :: Más
Prueba :: Simple
Texto :: Equilibrado
Tiempo :: HiRes
El uso del sitio web de nanosueño (), si está disponible, permite mezclar inactivos de subsegundos con alarmas.

threads
Varias correcciones, por ejemplo para unirse() problemas y pérdidas de memoria. En algunas plataformas
(como Linux) que usan glibc, la huella de memoria mínima de un subproceso ha sido
reducido en varios cientos de kilobytes.

hilos :: compartido
Se han solucionado muchas pérdidas de memoria.

Unicode :: Collate
Unicode :: Normalizar
Win32 :: GetFolderPath
Win32 :: GetOSVersion
Ahora devuelve información adicional.

Utilidad Cambios


La utilidad "h2xs" ahora produce un diseño más moderno: Foo-Bar / lib / Foo / Bar.pm en lugar de
Foo / Bar / Bar.pm. Además, la prueba estándar ahora se llama t / Foo-Bar.t en lugar de t / 1.t.

El depurador de Perl (lib / perl5db.pl) ahora se ha documentado ampliamente y se han encontrado errores
mientras se documentan se han corregido.

"perldoc" ha sido reescrito desde cero para ser más robusto y rico en funciones.

"perlcc -B" funciona ahora al menos algo mejor, mientras que "perlcc -c" está algo más roto.
(El conjunto de compiladores de Perl en su conjunto sigue siendo experimental).

New Documentación


perl573delta se ha agregado para enumerar las diferencias entre el (ahora bastante obsoleto)
versiones de desarrollo 5.7.2 y 5.7.3.

Se ha agregado perl58delta: es la perldelta de 5.8.0, detallando las diferencias
entre 5.6.0 y 5.8.0.

Se ha añadido perlartistic: es la Licencia Artística en formato pod, lo que facilita
para que los módulos se refieran a él.

Se ha añadido perlcheat: es una hoja de trucos de Perl.

Se ha agregado perlgpl: es la Licencia Pública General GNU en formato pod, por lo que
más fácil para los módulos hacer referencia a él.

Se ha agregado perlmacosx para informar sobre la instalación y el uso de Perl en Mac OS X.

Se ha agregado perlos400 para informar sobre la instalación y el uso de Perl en OS / 400 PASE.

Se ha añadido perlreref: es una referencia rápida de expresiones regulares.

Instalación y Configuration Mejoradas


La ubicación Perl estándar de Unix, / usr / bin / perl, ya no se sobrescribe de forma predeterminada si
existe. Este cambio fue muy prudente porque muchos proveedores de Unix ya ofrecen un
/ usr / bin / perl, pero simultáneamente muchas utilidades del sistema pueden depender de esa versión exacta
de Perl, así que es mejor no sobrescribirlo.

Ahora se pueden especificar directorios de instalación para el sitio y el vendedor y las páginas HTML, y
scripts del sitio y del proveedor. Ver INSTALAR.

Ahora se puede especificar un directorio de destino para la instalación de Perl especificando el
Variable DESTDIR para "make install". (Esta función es ligeramente diferente de la
anterior "Configurar -Dinstallprefix = ...".) Ver INSTALAR.

gcc versiones 3.x introdujeron una nueva advertencia que causó mucho ruido durante Perl
compilación: "gcc -Ialreadyknowndirectory (advertencia: cambio de orden de búsqueda)". Esta advertencia
Configure ahora ha evitado eliminar dichos directorios antes de la compilación.

Ahora se pueden construir subconjuntos de módulos centrales de Perl usando las banderas Configurar
"-Dnoextensions = ..." y "-Donlyextensions = ...", consulte INSTALAR.

Específico de la plataforma mejoras
En Cygwin, Perl ahora se puede construir con subprocesos ("Configurar -Duseithreads"). Esto funciona con
tanto Cygwin 1.3.22 como Cygwin 1.5.3.

En las versiones más recientes de FreeBSD, la compilación de Perl 5.8.0 falló al intentar usar malloc.h,
que en FreeBSD es solo un archivo ficticio y un error fatal incluso para intentar usarlo. Ahora malloc.h
No se utiliza.

Ahora se sabe que Perl también se construye en Hitachi HI-UXMPP.

Ahora se sabe que Perl se vuelve a construir en LynxOS.

Mac OS X ahora se instala con el número de versión de Perl incrustado en los nombres del directorio de instalación
para facilitar la actualización de Perl compilado por el usuario y los directorios de instalación en general
son más estándar. En otras palabras, la instalación predeterminada ya no rompe el Apple-
proporcionó Perl. Por otro lado, con "Configure -Dprefix =/ usr"ahora puedes realmente
reemplace el Perl provisto por Apple (Por favor be cuidadoso).

Mac OS X ahora compila Perl de forma estática de forma predeterminada. Este cambio se realizó principalmente para acelerar
tiempos de inicio. El Perl proporcionado por Apple todavía está vinculado y compartido dinámicamente, y usted
puede habilitar la compartición para sus propias compilaciones de Perl mediante "Configure -Duseshrplib".

Perl se ha adaptado al entorno OS / 400 PASE de IBM. La mejor manera de construir un Perl para
PASE es utilizar un host AIX como entorno de compilación cruzada. Consulte README.os400.

Se ha agregado otra opción de compilación cruzada: ahora Perl se basa en OpenZaurus, un
Distribución Linux basada en Mandrake + Embedix para Sharp Zaurus PDA. Ver el
Archivo Cross / README.

Tru64 al usar gcc 3 elimina la optimización para toke.c a "-O2" debido a la gigantesca
uso de memoria con el valor predeterminado "-O3".

Tru64 ahora puede construir Perl con las bases de datos de Berkeley más nuevas.

La construcción de Perl en WinCE se ha mejorado mucho, consulte LÉAME.ce y LÉAME.perlce.

Seleccionado Error Correcciones


Cierres eval y léxicos
Ha habido muchas correcciones en el área de subscripciones anónimas, léxicos y cierres. A pesar de que
esto significa que Perl ahora es más "correcto", es posible que algún código existente
ruptura que pasa a depender del comportamiento defectuoso. En la práctica, esto es poco probable a menos que
su código contiene un anidamiento muy complejo de subs, evals y léxicos anónimos.

Generic fijo
Si un identificador de archivo de entrada está marcado ": utf8" y Perl ve UTF-8 ilegal entrando al hacer
" ", si las advertencias están habilitadas, se emite una advertencia de inmediato, en lugar de permanecer en silencio
sobre eso y Perl no está contento con los datos rotos más tarde. (La capa ": encoding (utf8)"
también funciona de la misma manera.)

binmode (SOCKET, ": utf8") solo funcionó en el lado de entrada, no en el lado de salida del
enchufe. Ahora funciona en ambos sentidos.

Para Perls con subprocesos, ciertas funciones de la base de datos del sistema, como getpwent () y getgrent () ahora
hacer crecer su búfer de resultados dinámicamente, en lugar de fallar. Esto significa que en sitios con
Muchos usuarios y grupos, las funciones ya no fallan al devolver solo resultados parciales.

Perl 5.8.0 había roto accidentalmente la capacidad de los usuarios para definir su propia
mapeos Unicode en mayúsculas <-> minúsculas (como lo anuncia Camel). Esta característica tiene
ha sido corregido y también está mejor documentado.

En 5.8.0 esto

$ some_unicode. = ;

no funcionó correctamente, sino que corrompió los datos. Esto ahora ha sido arreglado.

Los métodos vinculados como FETCH, etc. ahora pueden acceder de forma segura a los valores vinculados, es decir, dando como resultado un
llamada recursiva a FETCH, etc. Recuerde romper la recursividad.

Al inicio, Perl bloquea la señal SIGFPE ya que no hay mucho que Perl pueda hacer al respecto.
Anteriormente, este bloqueo también se aplicaba a los programas ejecutados desde Perl. Ahora
Perl restaura la rutina de manejo de SIGFPE original, sea lo que sea, antes de ejecutar
programas externos.

Los números de línea en los scripts de Perl ahora pueden ser mayores que 65536, o 2 ** 16. (Los scripts de Perl tienen
siempre ha podido ser más grande que eso, es solo que el número de lino de los errores informados
y las advertencias se han "envuelto".) Mientras que los scripts tan grandes suelen indicar la necesidad de
reconsidere su código un poco, tales scripts de Perl existen, por ejemplo, como resultados de generados
código. Ahora los números de lino pueden llegar hasta 4294967296, o 2 ** 32.

Específico de la plataforma fijo
Linux

· La configuración de $ 0 funciona de nuevo (con ciertas limitaciones sobre las que Perl no puede hacer mucho: consulte
"$ 0" en perlvar)

HP-UX

· Establecer $ 0 ahora funciona.

VMS

· La configuración ahora prueba la presencia de "poll ()", e IO :: Poll ahora usa el
función proporcionada por el proveedor si se detecta.

· Podría producirse una infracción de acceso poco común en el inicio de Perl si se instala la imagen de Perl
con privilegios o si había un identificador con el atributo de subsistema establecido en el
lista de derechos del proceso. Cualquiera de estas circunstancias desencadenó un código de contaminación que
contenía un error de puntero. Se corrigió la aritmética del puntero defectuosa.

· El límite de longitud de los valores (no de las claves) en el hash% ENV se ha elevado de 255 bytes
a 32640 bytes (excepto cuando la configuración PERL_ENV_TABLES anula el uso predeterminado de
nombres lógicos para% ENV). Si es necesario acceder a estos valores largos desde fuera
Perl, tenga en cuenta que se implementan utilizando nombres lógicos de lista de búsqueda que almacenan
el valor en piezas, cada pieza de 255 bytes (hasta 128 de ellos) es un elemento en el
lista de búsqueda. Al realizar una búsqueda en% ENV desde Perl, los elementos se combinan
en un solo valor. La capacidad existente específica de VMS para acceder a elementos individuales
de un nombre lógico de lista de búsqueda a través de la sintaxis $ ENV {'foo; N'} (donde N es la lista de búsqueda
index) está intacto.

· La implementación de la tubería ahora usa símbolos DCL locales en lugar de globales para
proceso de comunicación.

· Archivo :: Buscar podría confundirse al navegar a un directorio relativo cuyo nombre
chocó con un nombre lógico. Este problema se ha corregido agregando directorio
sintaxis a los nombres de ruta relativos, evitando así la traducción de nombres lógicos.

Win32

· Una fuga de memoria en el tenedor() Se ha corregido la emulación.

· El valor de retorno del ioctl () La función incorporada se rompió accidentalmente en 5.8.0.
Esto ha sido corregido.

· El bucle de mensaje interno ejecutado por perl durante las operaciones de bloqueo a veces
interfería con mensajes externos a Perl. Esto a menudo resultó en el bloqueo
operaciones que terminan prematuramente o devuelven resultados incorrectos, cuando Perl estaba
ejecutándose en entornos que podrían generar mensajes de Windows. Esto ha sido
corregido

· Las tuberías y los enchufes ahora están automáticamente en modo binario.

· La forma de cuatro argumentos de Seleccione() no conservó $! (errno) correctamente cuando hay
fueron errores en la llamada subyacente. Esto ahora está arreglado.

· Se ha solucionado el problema de "CR CR LF", binmode (FH, ": crlf") ahora es efectivamente un
sin operación

New or cambiado Diagnóstico


Todas las advertencias relacionadas con paquete() y deshacer() se hicieron más informativos y consistentes.

cambiado "A thread salido mientras %d threads fueron corriendo"
La versión antigua

Un subproceso salió mientras% d otros subprocesos aún se estaban ejecutando

era engañoso porque el "otro" incluía también el hilo que daba la advertencia.

Remoto "Intento a limpiar a límite picadillo"
No es ilegal borrar un hash restringido, por lo que se eliminó la advertencia.

New "Ilegal declaración of anónimo subrutina "
Debe especificar el bloque de código para "sub".

cambiado "Inválido distancia "%s" in transcripción operador"
La versión antigua

Intervalo "% s" no válido [] en el operador de transliteración

fue simplemente incorrecto porque no hay "[] rangos" en tr ///.

New "Desaparecido control tanque nombre in \C"
Autoexplicativo.

New "Nueva línea in justificado a la izquierda cadena para %s"
Los espacios de relleno aparecerían después de la nueva línea, que probablemente no sea lo que tenía en
mente.

New "Posible precedencia problema on poco a poco %c operador"
Si piensas esto

$ x & $ y == 0

comprueba si el AND bit a bit de $ xy $ y es cero, le gustará esta advertencia.

New "Pseudo-hashes están obsoleto"
Esta advertencia ya debería haber estado en 5.8.0, ya que lo están.

New "leer() on %s manejador de archivos %s"
No se puede leer() (o sysread ()) de un identificador de archivo cerrado o sin abrir.

New "5.005 threads están obsoleto"
Esta advertencia ya debería haber estado en 5.8.0, ya que lo están.

New "Atado variable liberado mientras aun in usar"
Algo desconectó una variable ligada en vivo, Perl juega seguro al rescatar.

New "Para% s: ilegal cartografía '%s'"
Se especificó un mapeo de casos Unicode definido por el usuario ilegal.

New "Usar of liberado valor in iteración"
Algo modificó los valores que se repiten. Esto no está bien.

cambiado Internos


Estas noticias solo te importan si escribes código XS o te gusta conocerlas o piratear
Internos de Perl (usando Devel :: Peek o cualquiera de los recuentos de módulos "B ::"), o me gusta ejecutar Perl
con la opción "-D".

Los ejemplos de incorporación de perlembed se han revisado para que estén actualizados y sean coherentes:
por ejemplo, el uso correcto de PERL_SYS_INIT3 () y PERL_SYS_TERM ().

Se ha realizado una reelaboración extensa del código pad (el código responsable de las variables léxicas).
conducido por Dave Mitchell.

Extenso trabajo en las cuerdas en V de John Peacock.

Caché de posición y longitud UTF-8: para acelerar el manejo de escalares Unicode (UTF-8),
se introdujo el caché. Existen problemas potenciales si una extensión pasa por alto las API oficiales
y modifica directamente el PV de un SV: la caché UTF-8 no se borra como debería.

Las API obsoletas en Perl 5.8.0, como sv_2pv, sv_catpvn, sv_catsv, sv_setsv, están nuevamente
para todos.

Ciertas API de Perl core C como cxinc y regatom ya no están disponibles para codificar
fuera del núcleo de Perl de las extensiones del núcleo de Perl. Esto es intencional. Ellos nunca
debería haber estado disponible con los nombres más cortos, y si su aplicación depende de ellos,
Debería (avergonzarse y) ponerse en contacto con perl5-porters para discutir cuáles son las API adecuadas.

Ciertas API de C de núcleo de Perl como "Perl_list" ya no están disponibles sin su "Perl_"
prefijo. Si su módulo XS deja de funcionar porque no se pueden encontrar algunas funciones, en muchos
casos, una solución simple es agregar el prefijo "Perl_" a la función y al contexto del hilo
"aTHX_" como primer argumento de la llamada a la función. Así es también como siempre debería
Se han hecho: dejar que las formas sin Perl_ se filtraran desde el núcleo fue un accidente. Para
incrustación más limpia, también puede forzar esto para todas las API definiendo en el momento de la compilación el cpp
definir PERL_NO_SHORT_NAMES.

Perl_save_bool () ha sido añadido.

Los objetos Regexp (aquellos creados con "qr") ahora tienen S-magic en lugar de R-magic. Esto arreglado
expresiones regulares de la forma /...(??{...;$x})/ para no ignorar más los cambios realizados en $ x. La S-magia
evita eliminar la optimización del almacenamiento en caché y hacer que las construcciones (?? {...}) sean obscenamente lentas
(y en consecuencia inútil). Consulte también "Variables mágicas" en perlguts. Regexp :: Copiar era
afectados por este cambio.

Las macros de depuración internas de Perl DEPURAR() y DEBUTANTE() han sido renombrados a PERL_DEBUG () y
PERL_DEB () para evitar conflictos de espacio de nombres.

"-DL" eliminado (la prueba de fugas se había roto y no había sido compatible durante años, use una alternativa
depurar mallocs o herramientas como valgrind y Purify).

Modificador detallado "v" agregado para "-DXv" y "-Dsv", ver perlrun.

New Examenes


En Perl 5.8.0 había aproximadamente 69000 pruebas separadas en aproximadamente 700 archivos de prueba, en Perl 5.8.1
hay alrededor de 77000 pruebas separadas en alrededor de 780 archivos de prueba. Los números exactos dependen de
la configuración de Perl y en la plataforma del sistema operativo.

Conocido Problemas


La asignación al azar de hash mencionada en "Cambios incompatibles" es definitivamente problemática:
Despertará errores latentes y eliminará malas suposiciones.

Si desea utilizar mod_perl 2.x con Perl 5.8.1, necesitará mod_perl-1.99_10 o superior.
Las versiones anteriores de mod_perl 2.x no funcionan con los hash aleatorios. (mod_perl 1.x
funciona bien.) También necesitará Apache :: Test 1.04 o superior.

Muchas de las plataformas más raras que funcionaron al 100% o bastante cerca con perl 5.8.0 tienen
se ha dejado un poco desatendido ya que sus mantenedores han estado ocupados últimamente,
y por lo tanto habrá más fallas en esas plataformas. Tales plataformas incluyen Mac
OS Classic, IBM z / OS (y otras plataformas EBCDIC) y NetWare. El Perl más común
plataformas (Unix y similares a Unix, plataformas de Microsoft y VMS) tienen pruebas y
población experta que les está yendo bien.

Atado hash in escalar contexto
Los hash vinculados no devuelven nada útil en el contexto escalar, por ejemplo cuando
utilizado como pruebas booleanas:

if (% bound_hash) {...}

El comportamiento sin sentido actual es siempre devolver falso, independientemente de si el
hash está vacío o tiene elementos.

La causa principal es que no hay una interfaz para los implementadores de hashes vinculados a
implementar el comportamiento de un hash en contexto escalar.

Red :: Ping 450_servicio y 510_ping_udp fallas
Las subpruebas 9 y 18 de lib / Net / Ping / t / 450_service.t, y la subprueba 2 de
lib / Net / Ping / t / 510_ping_udp.t puede fallar si tiene una configuración de red inusual. Para
ejemplo, en el último caso, la prueba está intentando enviar un ping UDP a la dirección IP
127.0.0.1.

ANTES DE CRISTO
El backend del compilador que genera C B :: C (el frontend es "perlcc -c") es aún más
roto de lo que solía estar debido a los extensos cambios de variables léxicas. (El bueno
La noticia es que B :: Bytecode y ByteLoader son mejores de lo que solían ser).

Plataforma Ciertas Problemas


EBCDIC Plataformas
IBM z / OS y otras plataformas EBCDIC continúan siendo problemáticas con respecto al soporte Unicode.
Muchas pruebas Unicode se omiten cuando realmente deberían corregirse.

Cygwin 1.5 problemas
En Cygwin 1.5 el io / tell y op / sysio las pruebas tienen fallas por alguna razón aún desconocida.
En 1.5.5, las pruebas de subprocesos stress_cv, stress_re y stress_string fallan a menos que el
La variable de entorno PERLIO se establece en "perlio" (lo que hace que también se produzca la falla io / tell
lejos).

Perl 5.8.1 se construye y funciona bien con Cygwin 1.3: con (uname -a) "CYGWIN_NT-5.0 ...
1.3.22 (0.78 / 3/2) 2003-03-18 09:20 i686 ... "se logró un 100% de" prueba de marca "con
"Configurar -des -Duseithreads".

HP-UX: HP cc advertencias de seguridad para el hogar enviar archivo y ruta de envío
Con ciertas versiones del compilador de HP C (por ejemplo, B.11.11.02) obtendrá muchas advertencias como esta
(líneas envueltas para facilitar la lectura):

cc: "/usr/include/sys/socket.h", línea 504: advertencia 562:
Reclamación de "sendfile" con un especificador de clase de almacenamiento diferente:
"sendfile" tendrá un enlace interno.
cc: "/usr/include/sys/socket.h", línea 505: advertencia 562:
Reclamación de "sendpath" con un especificador de clase de almacenamiento diferente:
"sendpath" tendrá un enlace interno.

Las advertencias aparecen tanto durante la compilación de Perl como durante ciertas pruebas de lib / ExtUtils
que invocan el compilador de C. Sin embargo, la advertencia no es seria y puede ignorarse.

IRIX: t / uni / tr_7jis.t falsamente fallando
Se sabe que la prueba t / uni / tr_7jis.t informa fallas en 'hacer prueba' o en el arnés de prueba
con ciertas versiones de IRIX (al menos IRIX 6.5 y MIPSpro Compilers Version 7.3.1.1m),
pero si se ejecuta manualmente, la prueba pasa por completo.

Mac OS X: no usarmymalloc
Perl malloc ("-Dusemymalloc") no funciona en absoluto en Mac OS X. Esto no es
serio, ya que el malloc nativo funciona bien.

Tru64: No roscado construye con GNU cc (cc)
En las últimas versiones de Tru64 (por ejemplo, v5.1B o posterior), gcc no se puede usar para compilar
Perl subproceso (-Duseithreads) porque el sistema " "el archivo no conoce
gcc.

Win32: sistema abierto, lectura del sistema, escritura del sistema
A partir de la versión 5.8.0, sysopen ()/sysread ()/syswrite () no te comportes como solían hacerlo en
5.6.1 y anteriores con respecto al modo "texto". Estos dispositivos integrados ahora siempre funcionan en
modo "binario" (incluso si sysopen () se pasó la bandera O_TEXT, o si binmode () fue usado en
el identificador del archivo). Tenga en cuenta que este problema solo debería marcar la diferencia para los archivos de disco, ya que
Los enchufes y tuberías siempre han estado en modo "binario" en el puerto de Windows. Como este comportamiento
actualmente se considera un error, el comportamiento compatible puede volver a introducirse en el futuro
liberar. Hasta entonces, el uso de sysopen (), sysread () y syswrite () no es compatible con
operaciones en modo "texto".

Futuro Direcciones


Las siguientes cosas puede sucederá en el futuro. Los primeros lanzamientos disponibles públicamente que tienen
Estas características serán las que el desarrollador lance Perl 5.9.x, culminando en Perl
Versión 5.10.0. Estas son nuestras mejores conjeturas en este momento: nos reservamos el derecho a
repensar.

· PerlIO se convertirá en el predeterminado. Actualmente (en Perl 5.8.x) la biblioteca stdio todavía está
se usa si Perl cree que puede usar ciertos trucos para hacer que stdio funcione realmente rápido. Para
futuras versiones, nuestro objetivo es hacer que PerlIO sea aún más rápido.

· Una nueva característica llamada afirmaciones estará disponible. Esto significa que uno puede tener código
llamadas aserciones esparcidas en el código: generalmente están optimizadas, pero pueden
ser habilitado con la opción "-A".

· Un nuevo operador "//" (definido-o) estará disponible. Esto significa que uno podrá
decir

$ a // $ b

en lugar de

definido $ a? $ a: $ b

y

$ c // = $ d;

en lugar de

$ c = $ d a menos que se defina $ c;

El operador tendrá la misma precedencia y asociatividad que "||". Un código fuente
parche contra las fuentes de Perl 5.8.1 estará disponible en CPAN como
autores / id / H / HM / HMBRAND / dor-5.8.1.diff.

· "Unpack ()" por defecto descomprimirá el $ _.

· Se investigarán varias técnicas de copia en escritura con la esperanza de acelerar Perl.

· CPANPLUS, Inline y Module :: Build se convertirán en módulos centrales.

· Se introducirá la capacidad de escribir verdaderos pragmas de ámbito léxico.

· El trabajo continuará en el compilador de bytes y el cargador de bytes.

· Las cadenas en v tal como existen actualmente están programadas para ser obsoletas. La forma sin v
(1.2.3) se convertirá en un "objeto de versión" cuando se use con "use", "require" y $ VERSION.
$ ^ V también será un "objeto de versión", por lo que la construcción printf ("% vd", ...) ya no
ser necesario. La versión v-ful (v1.2.3) quedará obsoleta. La equivalencia de
strings y v-strings (por ejemplo, que actualmente 5.8.0 es igual a "\ 5 \ 8 \ 0") desaparecerán.
Hay pueden be no deprecación de advertencia de ugencia para cuerdas en V, aunque: es bastante difícil de detectar
cuando las cadenas en V se utilizan de forma segura y cuando no.

· Se eliminarán 5.005 hilos

· Se eliminará la variable $ * (fue obsoleta hace mucho tiempo)

· Se eliminarán los pseudohashes

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://bugs.perl.org/ . Allí
también puede ser información en http://www.perl.com/ , la página de inicio de Perl.

Si cree que tiene un error no informado, ejecute el perlbug programa 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. Puede explorar y buscar los errores de Perl 5 en
http://bugs.perl.org/

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


Servidores y estaciones de trabajo gratuitos

Descargar aplicaciones de Windows y Linux

Comandos de Linux

Ad




×
Anuncio
❤ ️Compre, reserve o adquiera aquí: sin costo, ayuda a mantener los servicios gratuitos.