Comment utiliser le mot-clé" Mon " dans Perl?

je continue à voir le mot-clé" mon " devant les noms de variables dans les scripts Perl exemple en ligne, mais je n'ai aucune idée de ce que cela signifie. J'ai essayé de lire les pages de manuel et d'autres sites en ligne, mais j'ai de la difficulté à discerner ce que c'est, étant donné la différence entre la façon dont je le vois utilisé et le manuel.

par exemple, il est utilisé pour obtenir la longueur du tableau dans ce post: Trouver la taille d'un tableau en Perl

mais le manuel dit:

a my déclare que les variables énumérées sont locales (lexiquement) à la joindre un bloc, un fichier ou une évaluation. Si plus d'une valeur est inscrite, l' la liste doit être placé entre parenthèses.

Que fait-il et comment est-il utilisé?

71
demandé sur Community 2014-01-02 22:43:44

3 réponses

my restreint la portée d'une variable. La portée d'une variable est là où elle peut être vue. Réduire la portée d'une variable à l'endroit où elle est nécessaire est un aspect fondamental d'une bonne programmation. Il rend le code plus lisible et moins sujet aux erreurs, et se traduit par un grand nombre d'avantages dérivés.

si vous ne déclarez pas une variable en utilisant my , une variable globale sera créée à la place. Cela doit être évité. Utiliser use strict; indique à Perl que vous voulez être empêché de créer implicitement des variables globales, c'est pourquoi vous devez toujours utiliser use strict; (et use warnings; ) dans vos programmes.


Liées à la lecture: Pourquoi utiliser use strict; et use warnings; ?

111
répondu ikegami 2017-05-23 12:10:29

résumé rapide: my crée une nouvelle variable, local modifie temporairement la valeur d'une variable

dans l'exemple ci-dessous, $::a se réfère à $A dans l'espace de noms 'global'.

$a = 3.14159;
{
  my $a = 3;
  print "In block, $a = $a\n";
  print "In block, $::a = $::a\n";
}
print "Outside block, $a = $a\n";
print "Outside block, $::a = $::a\n";

# This outputs
In block, $a = 3
In block, $::a = 3.14159
Outside block, $a = 3.14159
Outside block, $::a = 3.14159

ie, local change temporairement la valeur de la variable, mais seulement dans la portée où elle existe.

Source: http://www.perlmonks.org/?node_id=94007

mise à Jour

à propos de la différence entre our et my voir

(merci à ThisSuitIsBlackNot ).

21
répondu Igor Chubin 2017-05-23 12:34:37

Variables Privées via my() , est la première de la documentation pour les my .

dans l'exemple de la taille du tableau que vous mentionnez, il n'est pas utilisé pour trouver la taille du tableau. Il est utilisé pour créer une nouvelle variable pour tenir la taille du tableau.

4
répondu cjm 2014-01-02 18:47:30