Este es el tipo de pregunta que indica que realmente debería leer un libro, y tal vez el resto de la etiqueta perl faqs.
Sin embargo, $_
es una variable de contexto que es creada implícitamente por ciertas construcciones y utilizada implícitamente por ciertas funciones incorporadas. He aquí algunos ejemplos:
while(<>) {
next if /^#/;
last if /^q(?:uit)?$/;
say "Howdy!" if /^hello$/;
}
haciendo un montón de ambiente de trabajo y la inspección de la variable $_
y es equivalente a esto:
while(defined($_ = <>)) {
next if $_ =~ /^#/;
last if $_ =~ /^q(?:uit)?$/;
say "Howdy!" if $_ =~ /^hello$/;
}
Otras construcciones que establecen $_
son: foreach
bucles, given
bloques, map
y grep
operaciones, y catch
bloques en Try::Tiny.
Otras construcciones que usan $_
son: instrucciones print;
, el operador de sustitución s///
y el operador de transliteración tr///
.
Lo aconsejo: 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 terser, y puede ser más claro al enfocarse 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.
[perldoc perlvar] (http://perldoc.perl.org/perlvar.html), [perldoc perlsyn] (http://perldoc.perl.org/perlsyn.html) – Ether
Parece que podría hacer una Mucho más uso de una introducción a los elementos esenciales de Perl que las respuestas de StackOverflow. ¿Has estado en http://learn.perl.org/? Existen recursos que incluyen documentación oficial de Perl, libros Perl (incluido Beginning Perl gratis en línea) y tutoriales en línea de alta calidad. – hobbs