L'opérateur => (épaisseur de la virgule) en Perl

L'opérateur => est utilisé pour séparer les valeurs. Le plus souvent il est utilisé lors de la description Perl hachage. Voici un exemple:

▶ Run
#!/usr/bin/perl

my %h = (
    a => 1,
    b => 2,
);

L'opérateur => est un sucre syntaxique. Cet opérateur est utilisé au lieu de l'opérateur virgule ,, mais à la différence de l'opérateur virgule, il perçoit l'opérande de gauche comme une chaîne, sans la nécessité de conclure son entre guillemets. Voici tout à fait similaire à la description Perl de hachage, mais avec l'utilisation de la virgule:

▶ Run
#!/usr/bin/perl

my %h = (
    'a', 1,
    'b', 2,
);

Lors de la description de hachage, il est toujours préférable d'utiliser l'opérateur de => pour la division de la clé-valeur, cette utilisation est plus illustratif de code.

Au lieu de l'opérateur virgule , , vous pouvez toujours utiliser l'opérateur => (mais pas l'inverse). Mais n'est pas toujours le cas vaut la peine de faire. Voici une autre description de hachage, qui fonctionne exactement comme les deux précédents, mais il ne faut pas il faut:

▶ Run
#!/usr/bin/perl

my %h = (
    a => 1 =>
    b => 2 =>
);

L'opérateur => est souvent appelé "grosse virgule", parce qu'il agit comme une virgule (avec un supplément), mais se compose de deux caractères au lieu d'un seul.

L'opérande de gauche

L'opérateur => considère la chaîne de l'opérande de gauche seulement si les conditions suivantes sont remplies:

  • l'opérande de gauche commence avec la lettre ou le symbole _
  • et l'opérande de gauche est composée uniquement de lettres, de chiffres et de caractères _

C'est pourquoi ce code ne fonctionnera pas (à cause du fait que dans le opérande est le symbole de la -):

▶ Run
#!/usr/bin/perl

my %h = (
   some-key => 3, # error!
);

Vous devez explicitement conclure some-key entre guillemets: 'some-key'.

Utilisation non хешах

L'opérateur => tout d'abord il convient d'utiliser pour la description des paires de valeurs dans le hachage. Il ressemble à un la flèche et lors de l'utilisation dans le hachage cela semble très organique — clé indique la valeur. Mais l'opérateur => vous pouvez utiliser non seulement dans хешах, mais en général, dans toutes les listes (mais pas toujours, cela a un sens). Voici un exemple d'utilisation de cette instruction dans le tableau:

▶ Run
#!/usr/bin/perl

my @arr = ( one => two => 'three' );

Dans cet exemple, a été créé un tableau qui se trouve en 3 lignes. Parce qu'il était utilisé l'opérateur de =>, alors que l'opérande de gauche ne peut pas être entre guillemets. Par conséquent, les deux premières lignes sont utilisées sans les guillemets. À l'opérande de droite de cette magie ne s'applique pas, par conséquent, la troisième ligne a dû mettre entre guillemets.

Cet exemple serait mieux d'écrire avec l'aide de l'opérateur qw:

▶ Run
#!/usr/bin/perl

my @arr = qw(one two three);

L'opérateur besoin d'écrire ensemble

L'opérateur => se compose de deux caractères et de ces deux caractères doivent être proches les uns des autres. Vous ne pouvez pas poster l'espace entre eux. Dans ce cas, si écrire = >, ce sera une erreur. Voici un exemple d'un code incorrect:

▶ Run
#!/usr/bin/perl

my %h = (
    a = > 1, # error!
);

Si vous exécutez ce code, l'écran s'affiche:

syntax error at script.pl line 4, near "= >"
Execution of script.pl aborted due to compilation errors.

La documentation officielle

Voici un extrait de la sortie de la commande perldoc perlop pro de l'opérateur =>:

    The "=>" operator (sometimes pronounced "fat comma") is a synonym for the
    comma except that it causes a word on its left to be interpreted as a
    string if it begins with a letter or underscore and is composed only of
    letters, digits and underscores. This includes operands that might
    otherwise be interpreted as operators, constants, single number v-strings
    or function calls. If in doubt about this behavior, the left operand can
    be quoted explicitly.

    Otherwise, the "=>" operator behaves exactly as the comma operator or list
    argument separator, according to context.

    For example:

        use constant FOO => "something";

        my %h = ( FOO => 23 );

    is equivalent to:

        my %h = ("FOO", 23);

    It is NOT:

        my %h = ("something", 23);

    The "=>" operator is helpful in documenting the correspondence between
    keys and values in hashes, and other paired elements in lists.

        %hash = ( $key => $value );
        login( $username => $password );

    The special quoting behavior ignores precedence, and hence may apply to
    part of the left operand:

        print time.shift => "bbb";

    That example prints something like "1314363215shiftbbb", because the "=>"
    implicitly quotes the "shift" immediately on its left, ignoring the fact
    that "time.shift" is the entire left operand.

Autres articles