sirve que programar para codigo perl hash operators perl-data-structures

que - ¿Cómo funciona el operador de flecha doble(=>) en Perl?



para que sirve perl (2)

Sé sobre el uso de hash del operador => , como este

$ cat array.pl %ages = (''Martin'' => 28, ''Sharon'' => 35, ''Rikke'' => 29,); print "Rikke is $ages{Rikke} years old/n"; $ perl array.pl Rikke is 29 years old $

y pensé que solo era la sintaxis para inicializar hashes, pero en las respuestas a ¿Cómo puedo calificar una variable como constante / final en Perl? , => ha sido usado como este

use Readonly; Readonly my $infilename => "input_56_12.txt";

¿Qué significa exactamente => ? ¿Hay más formas en que se puede utilizar => ?


Desde perlop :

El operador => es un sinónimo de coma, excepto que hace que su operando izquierdo se interprete como una cadena si comienza con una letra o un guión bajo y está compuesto solo de letras, dígitos y guiones bajos .

Esto incluye operandos que de otro modo podrían interpretarse como operadores, constantes, cadenas en V de un solo número o llamadas a funciones. En caso de duda sobre este comportamiento, el operando de la izquierda se puede citar explícitamente.

De lo contrario, el operador => se comporta exactamente como el operador de coma o el separador de argumentos de lista, según el contexto.

Por ejemplo:

use constant FOO => "something"; my %h = ( FOO => 23 );

es equivalente a:

my %h = ("FOO", 23);

No lo es:

my %h = ("something", 23);

El operador => es útil para documentar la correspondencia entre claves y valores en hashes, y otros elementos emparejados en listas .

%hash = ( $key => $value ); login( $username => $password );

Desde PBP :

He encontrado buena información de Perl Best Practices about Fat Commas => y creo que debería ser bueno mencionar aquí también.

Es mejor reservar la coma gorda exclusivamente para las siguientes cosas: -

Utilízalo al construir un hash :

my %h = ( FOO => 23 );

o al pasar argumentos con nombre a una subrutina, es decir,

$text = format_text({FOO => 23, BAR => 30});

o al crear una constante :

Readonly my $FOO => "23";

Para obtener más detalles, consulte el Capítulo 4: Valores y expresiones (comas gruesas) de las Mejores prácticas de Perl.


El operador => en perl es básicamente el mismo que la coma. La única diferencia es que si hay una palabra sin comillas en la izquierda, se trata como una palabra entre comillas. Entonces podrías haber escrito Martin => 28 que sería lo mismo que ''Martin'', 28 .

Puede hacer un hash desde cualquier lista de longitud uniforme, que es todo lo que está haciendo en su ejemplo.

Su ejemplo de Readonly es aprovechar la flexibilidad de Perl con los argumentos de subrutina al omitir el paréntesis. Es equivalente a Readonly(my $infilename, "input_56_12.txt") . Readonly es una función exportada por el módulo Readonly que toma dos argumentos: una referencia y un valor. Los internos de Readonly son dignos de otra pregunta si quieres entenderlos.

Aquí hay un ejemplo de cómo usarlo como una coma de una manera inesperada:

$ perl -e ''print hello => "world/n"'' helloworld