Pourquoi un nom de variable est-il suivi d'un soulignement non évalué correctement pendant l'interpolation de chaîne dans Perl?
my $i = 3; print "i = $i\n"; # works, prints "i = 3" print "_i = _$i\n"; # works, prints "_i = _3" print "i_ = $i_\n"; # FAILS, prints "i_ = " print "_i_ = _$i_\n"; # sort of works, prints "_i_ = _"
4 Réponses :
Activer $ i _ _ code> est un identifiant valide, il est donc tenter d'imprimer la valeur de cette variable (que vous n'avez pas définie, c'est donc
undef code>). p>
strict code> et
avertissements code>. p>
J'ai remarqué votre Bouddhabrot, tapis. Peut-être que cela vous intéresserait: Github.com/buddhabrot/buddhabrot (je n'ai pas pu vous joindre à d'autres Comment j'ai dû trouver un commentaire innocent quelque part).
mat est correct. Si vous avez vraiment besoin de ce soulignement immédiatement après la valeur UTILISE BACKSLASH: "$ i \ _" code>. p>
Imprimer 'i_ ='. $ i. "_ \ n"; code>
Je préfère beaucoup $ {i} code> sur la barre oblique inverse, car ils font des choses différentes dans d'autres contextes.
Une interpolation supprimée par le dos. Les boucles autour d'un nom de variable interpolent la valeur de cette variable. Imprimer "$ {i} _ \ n" code> est plus facile sur mes yeux et mes yeux, parce que ces deux choses feraient la même chose s'il est inclus.
En plus des autres réponses, vous pouvez utiliser la syntaxe alternative pour spécifier des variables: Notez l'utilisation des crochets bouclés: { code> et
et
} code> Pour spécifier le nom de la variable. Chaque fois que de doute, vous pouvez opter pour cette syntaxe. P> p>
Toujours utiliser ces éléments suivants:
use strict; use warnings;
Utilisez toujours des avertissements stricts et toujours utilisables!