strawberry logo lane historia example compilador perl

logo - ¿Cuál es la importancia de un guion bajo en Perl($_, @_)?



perl vs python (2)

Soy nuevo en Perl, y los utilicé así

$_

foreach (@list) { print "$_/n"; }

@_

sub search { my ($no, @list) = @_; }

¿Cómo funcionan exactamente estas variables de subrayado en Perl? ¿Cuáles son los otros constructos donde son útiles?



Este es el tipo de pregunta que indica que realmente debería leer un libro, y tal vez el resto de las preguntas frecuentes de la etiqueta perl.

Sin embargo, $_ es una variable de contexto que es creada implícitamente por ciertas construcciones y utilizada implícitamente por ciertas funciones integradas. Aquí hay unos ejemplos:

while(<>) { next if /^#/; last if /^q(?:uit)?$/; say "Howdy!" if /^hello$/; }

Esto requiere mucho trabajo para configurar e inspeccionar la variable $_ y es equivalente a:

while(defined($_ = <>)) { next if $_ =~ /^#/; last if $_ =~ /^q(?:uit)?$/; say "Howdy!" if $_ =~ /^hello$/; }

Otras construcciones que establecen $_ son: bucles foreach , bloques given , operaciones de map y grep , y bloques catch en Try::Tiny .

Otros constructos que usan $_ son: desnudo print; declaraciones, el operador s/// sustitución y el operador tr/// transliteración.

Aconsejaría esto: mientras aprende Perl, no use $_ implícitamente. Escríbalo todo en su totalidad (como en el segundo ejemplo anterior), para reforzar en tu mente lo que realmente está sucediendo. Al igual que cuando estás aprendiendo un idioma extranjero, debes aprender a hablar de manera adecuada y cuidadosa antes de aprender a ablandar el lenguaje. $_ es útil para escribir un código más corto, más exclusivo, y puede ser más claro si se enfoca en el procesamiento en lugar de las variables en las que se está haciendo, pero solo una vez que haya aprendido como segundo naturaleza qué operaciones están usando $_ . De lo contrario, es solo un desastre confuso.

Como se mencionó en otra parte, @_ es la lista de argumentos para una subrutina.