C'est le genre de question qui vous indique vraiment devrait lire un livre, et peut-être le reste de la balise perl faqs.
Néanmoins, $_
est une variable de contexte qui est créée implicitement par certaines constructions et utilisée implicitement par certaines fonctions intégrées. Voici quelques exemples:
while(<>) {
next if /^#/;
last if /^q(?:uit)?$/;
say "Howdy!" if /^hello$/;
}
Ce faisant beaucoup de milieu de travail et d'inspection de la variable $_
et est équivalent à:
while(defined($_ = <>)) {
next if $_ =~ /^#/;
last if $_ =~ /^q(?:uit)?$/;
say "Howdy!" if $_ =~ /^hello$/;
}
D'autres constructions qui définissent $_
sont: foreach
boucles, given
blocs, map
et grep
opérations, et catch
blocs dans Try::Tiny.
D'autres constructions qui utilisent $_
sont: les instructions print;
nues, l'opérateur de substitution s///
et l'opérateur de translittération tr///
.
Je vous le dis: pendant que vous apprenez Perl, n'utilisez pas $_
implicitement. Ecrivez tout cela en entier (comme dans le deuxième exemple ci-dessus), pour renforcer dans votre esprit ce qui se passe réellement. Tout comme lorsque vous apprenez une langue étrangère, vous devez apprendre à parler correctement et soigneusement avant d'apprendre à abréver la langue. $_
est utile pour écrire du code terser plus court, et peut être plus clair en se concentrant sur le traitement en cours plutôt que sur les variables pour lesquelles il est fait, mais seulement une fois que vous avez appris que les opérations utilisent $_
. Sinon, c'est juste un gâchis déroutant.
Comme mentionné ailleurs, @_
est la liste d'arguments à un sous-programme.
[perldoc perlvar] (http://perldoc.perl.org/perlvar.html), [perldoc perlsyn] (http://perldoc.perl.org/perlsyn.html) – Ether
Il semble que vous pourriez faire un beaucoup plus d'utilisation d'une introduction à l'essentiel de perl que les réponses StackOverflow. Avez-vous été à http://learn.perl.org/? Il y a des ressources, y compris la documentation officielle Perl, les livres Perl (y compris Beginning Perl gratuit en ligne) et des tutoriels en ligne de haute qualité. – hobbs