Como cualquier otro lenguaje, Perl también es propenso a errores. algunas de las características de Perl son muy difíciles de usar correctamente. El analizador de Perl entiende los operadores, funciones y métodos de Perl con la ayuda de algunos símbolos. Pero este no es el caso siempre. El analizador tiene que hacer las conjeturas cuando usamos Barewords . Bareword es un identificador o variable sin los símbolos o puntuaciones necesarios. En pocas palabras, podemos decir que Barewords son palabras sin comillas (es decir, Quotless Strings). Aunque las reglas estrictas de Perl desaconsejan el uso de palabras ambiguas, algunas de ellas siguen siendo aceptables para el analizador.
Ejemplo:
#!usr/bin/perl my $bw = BWeg; print "$bw\n";
Esto imprimirá BWeg. Pero, ¿qué pasa con el caso cuando usamos una subrutina del mismo nombre?
Ejemplo:
#!usr/bin/perl sub BWeg { return "Subroutine has been executed"; } $bw = BWeg; print "$bw\n";
Aquí podemos ver que la subrutina ha sido ejecutada. Entonces también podemos decir que Barewords causa ambigüedad. Para evitar esta ambigüedad, Perl tiene «uso estricto». El uso estricto se usa para hacer que los programas Perl sean menos propensos a errores.
Ejemplo:
#!usr/bin/perl use strict; my $bw = BWeg; print "$bw\n";
Emite un error de compilación como este.
¿Cómo usar barewords correctamente?
Barewords se puede usar en claves Hash , nombres de paquetes, constantes, bloques de código con nombre.
Ejemplo:
#!usr/bin/perl my %India = (UP =>'Taj Mahal', Rajastan =>'Chittorgarh', Kerala =>'Bakel Fort'); # Prints Bakel Fort my $var1 = $India{'Kerala'}; print($var1, "\n"); # Prints Taj Mahal my $var2 = $India{UP}; print($var2, "\n");
Por lo general, las claves hash en Perl no son ambiguas. Aquí podemos ver que declaramos funciones clave de 2 maneras como $India{‘Kerala’} y $India{UP}. Aunque se declaran de manera diferente, darán resultados.
Nombres de paquetes sin palabras
Los nombres de los paquetes también son palabras simples. Perl debe identificar cómo analizar Package->method . Para eso, obligamos al analizador a tratar Paquete como un nombre de paquete agregando el separador de paquete (::).
Bloques de código con nombre Bareword
Los bloques de código con nombre especial AUTOLOAD, BEGIN, CHECK, DESTROY, END, INIT y UNITCHECK son palabras simples.
package Monkey::Butler; BEGIN { initialize_simians( __PACKAGE__ ) } sub AUTOLOAD { ... }
podemos separar sub de AUTOLOAD, pero no es una práctica común.
Constantes de palabras desnudas
Las constantes declaradas con el pragma constante se pueden usar como palabras simples.
# don't use this for real authentication #!usr/bin/perl use constant NAME => 'GeeksForGeeks'; use constant PASSWORD => 'GeeksPl@tform'; $name=; $pass=; return unless $name eq NAME && $pass eq PASSWORD;
Devuelve falso si se proporciona un nombre de usuario y una contraseña incorrectos. Además, las constantes no se interpolan en strings entre comillas dobles.
Publicación traducida automáticamente
Artículo escrito por VeenaSreekumarNair y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA