Perl v5.18.0 representa, aproximadamente, 12 meses de desarrollo desde Perl v5.16.0 y contiene aproximadamente 400 000 líneas de cambios a lo largo de 2100 archivos, por parte de 113 autores.
Las diferencias con la versión anterior son:
- Nuevo mecanismo para características experimentales.
Las nuevas características experimentales requerirán este encantamiento:Using perl Syntax Highlighting- no warnings "experimental::feature_name";
- use feature "feature_name"; # mostrará un aviso si no se indica la línea ant.
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4 - Revisión de los hashes
Este será el comportamiento más sobresaliente de perl v5.18.0.
Por defecto, dos variables hash distintas con idénticos pares clave/valor, ofrecerán sus contenidos en orden diferente, cuando antes lo sacaban de forma idéntica.
La clave para evitar errores en el código actual es aceptar que los hashes son colecciones desordenadas, y actuar de acuerdo a esa idea. - Aleatorización de los hashes
La semilla que se utiliza en la función hash ahora será aleatoria. Esto significa que el orden de los pares clave/valor devuelto por las funciones keys(), values() y each() diferirán en cada ejecución.
Este cambio se introdujo para hacer a los hashes de Perl más robustos frente a ataques de complejidad algorítmica, y también porque descubrimos que exponía errores dependientes de la ordenación, y les hacía fácil trazarlos.
A los autores se les anima a no exponer el orden de las claves de los hashes a audiencias inseguras.
Aún más, cada hash tienee su propio orden de iteración, que debería hacer mucho más difícil determinar cuál es su semilla. - Nuevas funciones hash
Perl v5.18 incluye soporte para múltiples funciones de hash, aunque se recomienda usar la que trae por defecto (SIPHASH), ya que las demás tienen conocidos problemas de seguridad. - La variable de entorno PERL_HASH_SEED ahora acepta un valor hexadecimal, y ya no acepta valores enteros decimales
- Se añade la variable de entorno PERL_PERTURB_KEYS, que permite controlar el nivel de aleatorización aplicada a keys() y funciones afines
Cuando vale 0, perl no aplicará ninguna aleatorización a las claves. La probabilidad de que las claves cambien de orden debido a una inserción será la misma que en los anteriores perl, que es, básicamente, cuando el tamaño de los cubos de reserva de memoria, cambie.
Cuando vale 1, perl aleatorizará las claves de una forma no repetible. La probabilidad de que las claves cambien debido a una inserción será muy alta. Este es el modo más seguro, y el valor por defecto.
Cuando vale 2, perl aleatorizará las claves de una forma repetible. Ejecuciones repetidas del mismo programa deberían producir la misma salida, cada vez. - Hash::Util::hash_seed() ahora devuelve una cadena, en lugar de un entero.
- Se ha cambiado la forma de salida de PERL_HASH_SEED_DEBUG. Ahora hace que perl muestre la función hash con la que perl fue compilado, y la semilla, en hex., para ese proceso en concreto. Ejemplo:
- Código: Seleccionar todo
$ PERL_HASH_SEED_DEBUG=1 ./perl -e1
HASH_FUNCTION = MURMUR3 HASH_SEED = 0x1476bb9f
- Actualización a Unicode 6.2
- Ahora se incluye a todo el rango de caracteres Unicode la posibilidad de crear alias de sus nombres, y no solo en Inglés
- La nueva variable ${^LAST_FH} indica el último gestor de archivo que fue leído. Es el gestor de archivo que usa $., tell() y eof() (sin argumentos).
- Operaciones de conjunto en Expresiones regulares
Esta es una característica experimental, que permite hacer unión, intersección, etc., de un conjunto de puntos de código, de forma similar a Unicode::Regex::Set. Más información en perlrecharclass. - Subrutinas léxicas
Esta nueva característica sigue siendo experimenta. Para activarla:Using perl Syntax Highlighting- use 5.018;
- no warnings "experimental::lexical_subs";
- use feature "lexical_subs";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Ahora puedes declarar subrutinas con state sub foo, my sub foo y our sub foo.
state sub crea una subrutina visible dentro del ámbito léxico en que está declarada. La subrutina es compartida entre llamadas a la subrutina externa.
my sub declara una subrutina léxica que es creada cada vez que se entra en el bloque que la engloba. state sub es ligeramente más rápida que my sub.
our sub declara un alias léxico a la subrutina del mismo nombre, dentro del package. - Etiquetas calculadas
En los controles de bucles next, last y redo, y en el operador especial dump, se permiten ahora el uso de expresiones de etiquetas calculadas en tiempo de ejecución. Anteriormente, cualquier argumento que no era una constante se trataba como si fuera una cadena de caracteres vacía. - Más subrutinas en CORE::
Más funciones predefinidas se han añadido como subrutinas al espacio de nombres CORE::, sobre todo, aquellos identificadores que pueden ser implementados sin intérpretes personalizado: defined, delete, exists, glob, pos, prototype, scalar, split, study, y undef. - kill con nombres de señal, negativos
kill siempre permitía un número de señal negativo, que mataba al grupo de procesos, en lugar de a un solo proceso. También permitía nombres de señales. Pero no se comportaba de forma consistente con nombres de señal negativos, ya que eran tratados como si fueran 0. Ahora, nombres como -INT se tratan igual a -2 - Evitar llamar a memset con un valor de contador negativo
Un código perl pobremente escrito que permita a un atacante especificar un contador al operador perl de repetición de cadenas ('x') puede provocar un agotamiento de memoria, y por lo tanto, un ataque de denegación de servicio. - Un nombre de carácter \N{...} desconocido, ahora es un error de sintaxis
Anteriormente, salía una advertencia, y el carácter era sustituido por el carácter Unicode 'REPLACEMENT CHARACTER'. Unicode recomienda que esta situación sea un error de sintaxis. - Los alias de nombres de caracteres \N{} que habían quedado obsoletos, ahora son errores
- \N{BELL} ahora se refiere a U+1F514 en lugar de a U+0007, que ahora representa a \N{ALERT}
- Reglas explícitas para los nombres de variables e identificadores
En perl v5.16 no hay restricción a los nombres de variables de un solo carácter. Esto habría la puerta a varias clases de locura. En v5.18, ahora siguen las reglas de otros identificadores, además de aceptar aquellos caracteres que coincidan con la propiedad \p{POSIX_Punct}. - Ahora, los tabuladores verticales se consideran que son espacio en blanco
Nadie recuerda por qué \s no encontraba \cK, el tabulador vertical. Ahora lo hace. Dada la extrema rareza de este carácter, se esperan pocos estropicios. Dicho esto, esto es lo que significa:
\s en una exp. reg. coincide ahora con un tab. vertical en todas las ocasiones.
Los tab. verticales literales en una reg. exp. se ignoran cuando se usa el modificador /x.
Los tabuladores verticales, solos o mezclados con otro espacio en blanco, son ignorados cuando se interprete una cadena de caracteres como si fuera un número. Por ejemplo: - /(?{})/ y /(??{})/ han sido revisados profundamente
La implementación de esta característica ha sido completamente reescrita. Aunque la intención principal es la de corregir errores, algunos comportamientos, especialmente los relacionados con el ámbito léxico de las variables, se han cambiado. - Interpretación más estricta de la parte de reemplazo en una sustitución
Ya no será posible aprovecharse del intérprete cuando analice s///e, con cosas como esta: - given ahora crea un alias para la $_ global
En vez de asignar a una $_ léxica de forma implícita, given ahora crea un alias a la $_ global y la usa como su argumento, igual a como lo hace foreach. Sin embargo, sigue usando una $_ léxica si existe una $_ léxica en el ámbito (otra vez, igual a como lo hace foreach) - La familia de características de la coincidencia inteligente, ahora son experimentales
La Coincidencia Inteligente, añadida en v5.10.0, y profundamente revisada en v5.10.1, ha sido un asunto de quejas permanentes. Aunque existen un cierto número de formas de que sea útil, se ha probado que es problemática y confusa, tanto para los usuarios como para los implementadores de Perl. Existen un número de propuestas de cómo dirigir el problema. Está claro que la coincidencia inteligente va a cambiar o a desaparecer en el futuro. No es recomendable confiar en su comportamiento actual.
Se mostrarán advertencias cuando el intérprete vea ~~, given, o when. Para desactivar estas advertencias, puede añadir esta línea en el ámbito apropiado: no if $] >= 5.018, "experimental::smartmatch";
Considere, a pesar de todo, el reemplazar estas caracterísiticas, ya que su comportamiento puede cambiar antes de ser considerados estables. - $_ léxica ahora es experimental
Desde su introducción en Perl v5.10, ha causado mucha confusión, sin ninguna solución obvia:- Varios módulos (p. e., List::Util) esperan rutinas de retrollamadas para usar la $_ global. use List::Util 'first'; my $_; first { $_ == 1 } @list no funciona como uno podría esperar
- Una temprana declaración my $_ en el mismo archivo puede provocar advertencia confusas sobre clausuras
- El carácter de prototipo de subrutina "_" permite a las subrutinas llamadas acceder a su $_ léxico, así que, después de todo, realmente no es una variable privada
- Sin embargo, subrutinas con un prototipo "(@)" y métodos, no pueden acceder a una $_ léxica de la llamante, a menos que estén escritos en XS
- Pero incluso rutinas XS no pueden acceder a una $_ declarada como léxica, no en la subrutina que se llama, si no en el ámbito externo, si esa subrutina no menciona $_ o usa ninguno de los operadores que usan como expresión por defecto
- Varios módulos (p. e., List::Util) esperan rutinas de retrollamadas para usar la $_ global. use List::Util 'first'; my $_; first { $_ == 1 } @list no funciona como uno podría esperar
- readline() con $/ = \N ahora lee N caracteres, no N bytes
Anteriormente, cuando se leía de un flujo de E/S con capas, como las de codificación, la función readline(), también conocida como el operador <>, leería N bytes de la capa más superior.
Ahora, se leen N caracteres.
No hay cambios en el comportamiento cuando se lee de flujos sin capas extra, ya que los bytes se traducen exactamente a caracteres. - glob sobrecargado ahora solo admite un argumento
Un glob sobrecargado admitía un segundo argumento mágico, pero indocumentado, que identificaba al llamante. Ningún código en CPAN lo usaba, e iba camino de convertirse en un bug, así que ha sido eliminado. Si necesita, realmente, identificar al llamante, vea Devel::Callsite en CPAN. - Interpretación de los documentos incrustados
El cuerpo de un documento incrustado (here-doc) ahora siempre comienza en la línea a continuación de la marca "<<foo". Anteriormente, estaba documentado que comenzara en la línea siguiente al operador de entrecomillado, pero eso solo sucedía en algunos casos. - Los operadores alfanuméricos deben separarse del delimitador de cierre de las expresiones regulares
Ya no podrá escribir cosas como esta:
m/a/and 1
En lugar de eso, debe escribir
m/a/ and 1
con espacio en blanco separando el operador del delimitador de cierre de la expresión regular. Sin el espacio en blanco resultaba en una advertencia de obsolescencia desde Perl v5.14.0. - qw(...) ya no puede ser utilizado como si fueran paréntesis
Las listas qw se usaban para engañar al intérprete haciéndolo creer que siempre estaban rodeadas de paréntesis. Esto permitía construcciones sorprendentes como foreach $x qw(a b c) {...}, que realmente debería ser escrito como foreach $x (qw(a b c)) {...}. Esto, en algunas ocasiones, dejaba al motor léxico en un estado erróneo, así que no siempre funcionaba, y la similar foreach qw(a b c) {...} nunco funcionaba.
Este efecto añadido de qw ha sido completamente abolido. Es obsoleto desde Perl v5.13.11. Ahora es necesario usar paréntesis reales siempre que la gramática los exija. - Interacción de advertencias léxicas y las de por defecto
Al activar las advertencias léxicas, se desactivan las advertencias por defecto, si las advertencias léxicas no estaban ya activadas:Using perl Syntax Highlighting$*; # aviso de obsolescencia
use warnings "void";
$#; # ninguna advertencia; no hay advertencia de obsolescenciaColoreado en 0.001 segundos, usando GeSHi 1.0.8.4
Ahora, las categorías debugging, deprecated, glob, inplace y malloc se dejan activadas cuando se convierten en advertencias léxicas (a menos que hayan sido desactivadas con un no warnings, claro).
Esto puede provocar advertencias de obsolescencia en código que antes estaba libre de esas advertencias. - state sub y our sub
Debido a un accidente histórico, state sub y our sub eran equivalentes a una simple sub, así que cualquier podía crear una subrutina anónima con our sub { ... }. Ahora esto no se permite hacer si no está activa la característica "lexical_subs". La característica "lexical_subs" tiene ahora nuevos significados descritos en la sección "Subrutinas léxicas" en perlsub. - Valores definidos almacenados en el entorno ahora se les fuerza a ser cadenas de bytes
Un valor almacenado en una variable de entorno siempre había sido convertido en cadena de caracteres. En esta nueva versión, se convierte en una cadena de bytes. Primero, se fuerza a que sea solo una cadena. Lueg, si la cadena está en utf8 y es equivalente al resultado de utf8::downgrade(), se usa ese resultado; de otra forma, se usa utf8::encode(), y se emite una advertencia sobre la existencia de caracteres anchos (ver "Diagnostics"). - require se muere en archivos que no pueda leer
Cuando require encuentra un archivo no ilegible, se morirá. Se usa así para ignorar el archivo y continuar buscando en los directorios indicados en @INC. - Se interpreta de forma más consistente el primer argumento de split
Después de algunos cambios en v5.17, el comportamiento de split se ha simplificado: si el argumento PATRÓN se evalúa a una cadena de caracteres que contenga un único espacio en blanco, se trata de la misma manera que si fuera una cadena literal que contenga un espacio. - Retiro de módulos
Los siguientes módulos serán retirados de la distribución principal en una futura versión, y solo podrán ser instalados desde CPAN. Las distribuciones en CPAN que requieran estos módulos deberán listarlos como prerrequisitos.- encoding
El uso de este pragma está fuertemente desaconsejado. Confunde la codificación del código fuente con la codificación de la E/S, reinterpreta las secuencias de escape en el código fuente (algo cuestionable), e introduce el bug UTF-8 en todo el manejo de cadenas de caracteres, en tiempo de ejecución. Está roto desde que se concibió y lejos de ser arreglado.
Para usar caracteres no-ASCII en el código fuente, por favor refiérase a utf8. Para gestionar datos textuales en E/S, por favor refiérase a Encode y open. - Archive::Extract
- B::Lint
- B::Lint::Debug
- CPANPLUS y todos los módulos CPANPLUS::*
- Devel::InnerPackage
- Log::Message
- Log::Message::Config
- Log::Message::Handlers
- Log::Message::Item
- Log::Message::Simple
- Module::Pluggable
- Module::Pluggable::Object
- Object::Accessor
- Pod::LaTeX
- Term::UI
- Term::UI::History
- encoding
- Herramientas obsoletas
Las siguientes utilidades serán retiradas de la distribución principal en una futura versión, así como sus módulos sean marcados como obsoletos. Seguirán estando disponibles en CPAN.- cpanp
- cpanp-run-perl
- cpan2dist
Estos ítemes son parte de la distribución de CPANPLUS - pod2latex
Este ítem es parte de la distribución de Pod::LaTeX
- PL_sv_objcount
Esta variable global del intérprete utilizada para seguir el número total de objetos Perl ya no será mantenida y será eliminada en Perl v5.20. - Cinco caracteres adicionales deben ser escapados en patrones con /x
Cuando un patrón de expresiones regulares se compila con /x, Perl trata 6 caracteres como espacio en blanco que debe ignorar, como ESPACIO y TABULADOR. Sin embargo, Unicode recomienda que sean 11. Seguiremos esta recomendación en una futura versión de Perl. Mientras tanto, el uso de cualquiera de estos caracteres levantará una advertencia de obsolescencia, a menos que se desactiven las advertencias. Los cinco caracteres son:- Código: Seleccionar todo
U+0085 NEXT LINE
U+200E LEFT-TO-RIGHT MARK
U+200F RIGHT-TO-LEFT MARK
U+2028 LINE SEPARATOR
U+2029 PARAGRAPH SEPARATOR
- Nombres de caracteres definidos por el usuario con espacio en blanco inesperado
Un nombre de carácter definido por el usuario con uno o más caracteres espacio al final, muy posiblemente sea debido a un error tipográfico. Ahora esto genera una advertencia en el momento de la definición, y la asunción de que su uso implicará no tener en cuenta ese espacio en blanco excedente. - Varias funciones XS ahora son obsoletas
Todas las funciones utilizadas para clasificar caracteres serán eliminadas en una futura versión de Perl, y no deben ser usadas. Cuando participen compiladores de C (p. e., gcc), compilar cualquier archivo que use cualquiera de ellas generará una advertencia. No existía la intención de que fueran de uso público; existen macros equivalentes y más rápidas, para la mayoría de ellas.
Vea "Clases de caracteres" en perlapi. La lista completa es:
is_uni_alnum, is_uni_alnumc, is_uni_alnumc_lc, is_uni_alnum_lc, is_uni_alpha, is_uni_alpha_lc, is_uni_ascii, is_uni_ascii_lc, is_uni_blank, is_uni_blank_lc, is_uni_cntrl, is_uni_cntrl_lc, is_uni_digit, is_uni_digit_lc, is_uni_graph, is_uni_graph_lc, is_uni_idfirst, is_uni_idfirst_lc, is_uni_lower, is_uni_lower_lc, is_uni_print, is_uni_print_lc, is_uni_punct, is_uni_punct_lc, is_uni_space, is_uni_space_lc, is_uni_upper, is_uni_upper_lc, is_uni_xdigit, is_uni_xdigit_lc, is_utf8_alnum, is_utf8_alnumc, is_utf8_alpha, is_utf8_ascii, is_utf8_blank, is_utf8_char, is_utf8_cntrl, is_utf8_digit, is_utf8_graph, is_utf8_idcont, is_utf8_idfirst, is_utf8_lower, is_utf8_mark, is_utf8_perl_space, is_utf8_perl_word, is_utf8_posix_digit, is_utf8_print, is_utf8_punct, is_utf8_space, is_utf8_upper, is_utf8_xdigit, is_utf8_xidcont, is_utf8_xidfirst.
Además, tres funciones que nunca han funcionado apropiadamente han quedado obsoletas: to_uni_lower_lc, to_uni_title_lc, y to_uni_upper_lc. - Ciertos raros usos de barras diagonales inversas dentro de las exp. reg. son ahora obsoletos
Existen tres pares de caracteres que Perl reconoce como metacaracteres en patrones de expresiones regulares: {}, [], y (). Se pueden usar también como delimitadores de patrones, como en:
m{foo}
s(foo)(bar)
Ya que son metacaracteres, tienen un significado especial para los patrones de expresiones regulares, y resulta que no podemos desactivar ese significado especial por el medio normal de precederlo con una barra diagonal inversa, si además están siendo usados, por parejas, en un patrón que está delimitado por ellos. Por ejemplo, en
m{foo\{1,3\}}
las barras diagonales inversas no cambian el comportamiento, y esa línea busca una "f" seguida de una a tres ocurrencias de "o".
Usos como este, donde son interpretados como metacaracteres, son extremadamente raros; nosotros creemos que no hay ninguno, por ejemplo, en todo CPAN. Así que, esta obsolescencia deberia afectar a muy poco código. of CPAN. Este cambio nos obligará a cambiar cualquier código escrito así, pero nos ayudará en futuras versiones de Perl a que las barras diagonales inversas sigan teniendo su efecto correcto, sin temos que se rompa código existente. - Separar los token (? y (* en expresiones regulares
Una advertencia de obsolescencia se levanta si el ( y el ? se separan con espacio en blanco o comentarios, en construcciones de expresiones regulares (?...). De forma similar, si el ( y el * se separan en construcciones (*VERB...). - Próximas obsolescencias
- Plataformas sin soporte
- Windows CE
- z/OS
- DG/UX
- NeXT
Creemos que Perl ya no es capaz de compilarse en arquitecturas con órdenes de bits mezclados (como los de la PDP-11), y la intención es retirarles código de soporte. De forma similar, código que soportaba al largamente y no mantenido GNU dld será retirado pronto, si no da a conocer ningún usuario activo de esta plataforma. - Intercambio de $< y $>
Perl soportaba el modismo de intercambiar $< y $> (así como $( y $)) para disminuir permisos de forma temporal, desde v5.0, como aquí:
($<, $>) = ($>, $<);
Sin embargo, este modismo modifica el id real de usuario/grupo, que puede tener efectos colaterales indeseables, así que ya no es útil en ninguna plataforma que Perl soporte, y complica la implementación de estas variables y asignación de listas, en general.
Como alternativa, se recomienda solo asignar a $>:
local $> = $<;
Vea también: Setuid desmitificado. - microperl, largo tiempo roto, y sin un propósito claro, será retirado
- Rehacer la semántica "\Q" en cadenas de caracteres doblemente entrecomilladas cuando se combina con otras secuencias de escapado
Existen bastantes errores e inconsistencias alrededor de combinaciones de \Q y secuencias de escapado, como \x, \L, etc., dentro de una pareja \Q...\E. Necesitan ser arreglados, y esto hará que su comportamiento cambie. Los cambios no han sido establecidos, todavía. - Uso de $x, donde 'x' representa cualquier carácter de control C0 (no imprimible) será prohibido en una futura versión de Perl. Use en su lugar ${x} (donde, de nuevo, 'x' representa un carácter de control) o, mejor aún, $^A, donde '^' es un circunflejo (CIRCUMFLEX ACCENT), y 'A' representa cualquiera de los caracteres listados al final de "OPERATOR DIFFERENCES" en perlebcdic.
- Plataformas sin soporte
- Mejoras en las prestaciones
- Listas de declaraciones de variables léxicas (my($x, $y)) son ahora optimizadas a una sola operación, por lo que son más rápidas que antes.
- Se añadió un nuevo define de preprocesador C, NO_TAINT_SUPPORT, que, si está puesto, desactiva el soporte para el modo entintado de Perl. El uso de las banderas -T o -t en la línea de comandos provocará un error fatal. Cuidado que tanto comprobaciones del núcleo como de muchas distribuciones de CPAN fallarán con este cambio. En la parte positiva, ofrece una pequeña mejora en las prestaciones debido a la reducción de saltos.
No lo active a menos que sepa exactamente qué es lo que obtiene. - pack con argumentos constantes es plegado a una constante, en la mayor parte de los casos.
- Aumento de velocidad en la búsqueda con expresiones regulares con propiedades Unicode. La mayor ganancia es con \X, el "agregador de grafemas extendido". La ganancia es del 35 % al 40 %. Clases carácter entre corchetes, p., e., [0-9\x{100}] conteniendo puntos de código por encima del 255, son también más rápidos.
- En plataformas que lo soporten, muchas macros anteriores se implementan ahora como funciones inline estáticas. Esto debería aumentar la velocidad ligeramente en plataformas no-GCC.
- La optimización de hashes en contexto booleano se ha extendido para afectar a scalar(%hash), %hash ? ... : ..., y sub { %hash || ... }.
- Los operadores de test de archivos gestionan la pila de una forma más eficiente.
- Las expansiones usadas en contexto numérico ahora son convertidas a números directamente, en la mayor parte de los casos, en lugar de ser convertidos a números tras una conversión a cadena de caracteres.
- El operador de repetición 'x' ahora es plegado a una sola constante en tiempo de compilación si es llamado en contexto escalar con operandos constantes y sin paréntesis alrededor del operando izquierdo.
- Módulos y pragmas
- Nuevos módulos y pragmas
Config::Perl::V versión 0.16 se ha añadido como un módulo con doble vida. Ofrece una estructurada recuperación de la salida de perl -V incluyendo solo la información que el binario perl conoce, y no la que está disponible vía Config. - Módulos y pragmas actualizados
Para una lista completa de actualizaciones, ejecute:
$ corelist --diff 5.16.0 5.18.0 - Módulos y pragmas retirados
Version::Requirements ha sido retirado de la distribución principal. Está disponible con un nombre diferente: CPAN::Meta::Requirements.
- Nuevos módulos y pragmas
- Documentación. Cambios en la documentación actual
- perlcheat
perlcheat se ha reorganizado, y se han añadido nuevas secciones. - perldata
Ahora documenta explícitamente el comportamiento de los inicializadores de listas que contengan claves duplicadas. - perldiag
En la explicación de sobre la prohibición de uso de las referencias simbólicas por medio de "strict refs", ahora no se asume que el lector sepa qué es una referencia simbólica. - perlfaq
perlfaq se ha sincronizado con la versión 5.0150040 de CPAN. - perlfunc
Se ha documentado el valor de retorno de pipe.
Documentación más clara para our. - perlop
Los verbos de control de bucle (dump, goto, next, last y redo) siempre han tenido la misma precedencia que los operadores de asignación, pero no habían sido documentado hasta ahora.
- perlcheat
- Soporte para plataformas. Plataformas descontinuadas
- BeOS
BeOS fue un sistema operativo para ordenadores personales desarrollado por Be Inc, inicialmente para el hardware BeBox. El sistema operativo Haiku fue escrito como un reemplazo, en forma de código fuente abierto, como continuación/para BeOS, y su soporte Perl se sigue manteniendo con fuerza. - UTS Global
El código para el soporte de UTS Global ha sido retirado. UTS fue una versión mainframe de System V, creado por Amdahl, y luego vendido a UTS Global. La versión de Perl no se ha tocado desde la versión v5.8.0, y UTS Global está muerto. - VM/ESA
Soporte para VM/ESA ha sido retirado. Perl ha sido probado en 2.3.0, que IBM terminó de dar servicio en marzo de 2002. 2.4.0 terminó su servicio en junio de 2003, y fue reemplazado por Z/VM. La versión actual de Z/VM es la v6.2.0, y está planeado su fin de servicio el 30 de abril del 2015. - MPE/IX
El soporte para MPE/IX ha sido retirado. - EPOC
Soporte en código para EPOC ha sido retirado. EPOC fue una familia de sistemas operativos desarrollado por Psion para dispositivos móviles. Fue el predecesor de Symbian. La última versión de Perl fue actualizada en abril de 2002. - Rhapsody
Soporte para Rhapsody ha sido retirado.
- BeOS
- Problemas conocidos
Cadenas marcadas como UTF8 en %ENV en HP-UX 11.00 son propensas a tener errores. - Obituario
Hojung Yoon (AMORETTE), 24, de Seul, Corea del Sur, murió el 8 de mayo de 2013, junto con su tarjeta autografiada de TIMTOADY. Fue un brillante y joven hacker en Perl 5 y 6, y un miembro devoto de Seoul.pm. Programó Perl, habló Perl, comió Perl y amó Perl. Creemos que sigue programando en Perl con su portátil IBM roto, en algún lugar. Se le echará de menos. - Reconocimientos
Perl continúa floreciendo en su tercera década gracias a una vibrante comunidad de usuarios y desarrolladores. Las siguientes personas han contribuido a la aparición de Perl v5.18.0:
Aaron Crane, Aaron Trevena, Abhijit Menon-Sen, Adrian M. Enache, Alan Haggai Alavi, Alexandr Ciornii, Andrew Tam, Andy Dougherty, Anton Nikishaev, Aristotle Pagaltzis, Augustina Blair, Bob Ernst, Brad Gilbert, Breno G. de Oliveira, Brian Carlson, Brian Fraser, Charlie Gonzalez, Chip Salzenberg, Chris 'BinGOs' Williams, Christian Hansen, Colin Kuskie, Craig A. Berry, Dagfinn Ilmari Mannsåker, Daniel Dragan, Daniel Perrett, Darin McBride, Dave Rolsky, David Golden, David Leadbeater, David Mitchell, David Nicol, Dominic Hargreaves, E. Choroba, Eric Brine, Evan Miller, Father Chrysostomos, Florian Ragwitz, François Perrad, George Greer, Goro Fuji, H.Merijn Brand, Herbert Breunung, Hugo van der Sanden, Igor Zaytsev, James E Keenan, Jan Dubois, Jasmine Ahuja, Jerry D. Hedden, Jess Robinson, Jesse Luehrs, Joaquin Ferrero, Joel Berger, John Goodyear, John Peacock, Karen Etheridge, Karl Williamson, Karthik Rajagopalan, Kent Fredric, Leon Timmermans, Lucas Holt, Lukas Mai, Marcus Holland-Moritz, Markus Jansen, Martin Hasch, Matthew Horsfall, Max Maischein, Michael G Schwern, Michael Schroeder, Moritz Lenz, Nicholas Clark, Niko Tyni, Oleg Nesterov, Patrik Hägglund, Paul Green, Paul Johnson, Paul Marquess, Peter Martini, Rafael Garcia-Suarez, Reini Urban, Renee Baecker, Rhesa Rozendaal, Ricardo Signes, Robin Barker, Ronald J. Kimball, Ruslan Zakirov, Salvador Fandiño, Sawyer X, Scott Lanning, Sergey Alekseev, Shawn M Moore, Shirakata Kentaro, Shlomi Fish, Sisyphus, Smylers, Steffen Müller, Steve Hay, Steve Peters, Steven Schubiger, Sullivan Beck, Sven Strickroth, Sébastien Aperghis-Tramoni, Thomas Sibley, Tobias Leich, Tom Wyant, Tony Cook, Vadim Konovalov, Vincent Pit, Volker Schatz, Walt Mankowski, Yves Orton, Zefram.
La lista anterior es claramente incompleta, ya que se genera automáticamente desde el histórico de control de versiones. En particular, no incluye los nombres de los (muy apreciados) contribuyentes que han informado de problemas al Perl bug tracker.
Muchos de los cambios incluidos en esta versión se originaron en los módulos CPAN incluidos en el núcleo principal de Perl. Estamos agradecidos a toda la comunidad CPAN para ayudar a Perl.