Autovivificación


En el lenguaje de programación Perl , la autovivificación es la creación automática de nuevas matrices y hashes según sea necesario cada vez que se desreferencia un valor indefinido . La autovivificación de Perl permite a un programador hacer referencia a una variable estructurada y subelementos arbitrarios de esa variable estructurada, sin declarar expresamente la existencia de la variable y su estructura completa de antemano. [1]

Por el contrario, otros lenguajes de programación: 1) requieren que un programador declare expresamente una estructura de variable completa antes de usar o hacer referencia a cualquier parte de ella; o 2) requerir que un programador declare una parte de una estructura variable antes de hacer referencia a cualquier parte de ella; o 3) crear una asignación a una parte de una variable antes de hacer referencia, asignar o componer una expresión que haga referencia a cualquier parte de ella.

La autovivificación de Perl se puede comparar con lenguajes como Python , PHP , Ruby y muchos de los lenguajes de estilo C, donde generalmente no se permite desreferenciar valores nulos o indefinidos. [a] Se puede comparar con el "acceso con nombre en el objeto de ventana" del estándar HTML [2], lo que da como resultado que las variables de ámbito global correspondientes sean automáticamente accesibles para JavaScript basado en navegador .

Es importante recordar que la autovivificación ocurre cuando se desreferencia un valor indefinido. No es necesaria una cesión. La sesión del depurador a continuación ilustra la autovivificación de un hash con solo examinarlo:

Se crearon hash de varias capas de profundidad automáticamente sin ninguna declaración. La autovivificación puede evitar la mecanografía excesiva. Si Perl no admitiera la autovivificación, la estructura anterior tendría que crearse de la siguiente manera:

Perl 5.6.1 y versiones posteriores admiten la autovivificación de identificadores de archivos y directorios. [3] Llamar open()a una variable indefinida la configurará como un identificador de archivo. Según perl561delta, "[esto] elimina en gran medida la necesidad de typeglobs al abrir identificadores de archivos que deben pasarse, como en el siguiente ejemplo: