L'opérateur . en Perl

L'opérateur point est utilisé en Perl pour la concaténation (connexion) de lignes.

Exemple:

▶ Run
#!/usr/bin/perl

print 'ABC' . 'DEF';

Le programme affichera la chaîne 'ABCDEF'.

Dans cet exemple, l'opérateur point s'applique à deux lignes écrites dans le code du programme (ces lignes sont appelées "littéraux").

Habituellement, comme opérandes de l'opérateur point . sont des littéraux de chaîne, les variables scalaires ou les résultats des travaux d'autres fonctions.

Les lignes et le nombre de

L'opérateur . fonctionne toujours avec ses arguments comme avec des cordes. Le résultat de ces quatre opérations même la chaîne de '11'.

  • 1 . 1
  • 1 . '1'
  • '1' . 1
  • '1' . '1'

Et c'est très bien. Vous pouvez absolument sans problèmes enchaîner le nombre de lignes et le résultat sera exactement comme prévu.

L'utilisation de la matrice comme opérande

Voici un exemple de programme dans laquelle une matrice конкатенируется des chaînes avec l'opérateur .:

▶ Run
#!/usr/bin/perl

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

print 'A' . @arr . 'B';

Le programme affichera la chaîne 'A3B'.

'A' . @arr . 'B' c'est la même chose que 'A' . scalar(@arr) . 'B'.

Lors de l'utilisation d'un tableau avec l'opérateur point . le tableau est utilisé dans скалярном le contexte et le tableau dans скалярном le contexte renvoie le nombre d'éléments dans ce tableau.

L'utilisation de hachage comme opérande

Voici un exemple de programme dans lequel le hachage конкатенируется avec des chaînes à l'aide de l'opérateur .:

▶ Run
#!/usr/bin/perl

my %h = (
    a => 'one',
    b => 'two',
);

print 'A' . %h . 'B';

En fonction de la version de Perl, le programme affichera un ou une chaîne de type 'A2/8B', soit une chaîne de 'A2B'.

'A' . %h . 'B' c'est la même chose que 'A' . scalar(%h) . 'B'.

De la même façon que dans le cas d'un tableau, lors de l'utilisation de l'empreinte de l'opérateur de point de . hachage sera utilisé dans скалярном le contexte.

À partir de la version de Perl 5.26 hachage dans скалярном contexte renvoie le nombre de paires d'éléments dans ce hachage. Et dans la version de Perl à 5.26 hachage dans скалярном contexte renvoie des informations sur un dispositif interne de hachage.

L'utilisation de la référence à sabu comme opérande

Voici un exemple de programme dans lequel la référence à sabu конкатенируется avec des chaînes à l'aide de l'opérateur .:

▶ Run
#!/usr/bin/perl

my $sub = sub {
   return 42;
};

print 'A' . $sub . 'B';

Perl à la version 5.22 affichera quelque chose comme ACODE(0x1452f00)B, à partir 5.22 à l'écran il y aura environ la même ligne, il y aura plus de chiffres après la 0x: ACODE(0x561e87413ed8)B.

Les différents lancements de programmes seront afficher des chiffres différents.

'A' . $sub . 'B' c'est la même chose que 'A' . scalar($sub) . 'B'. Lors de l'utilisation dans скалярном le contexte de la anonyme de saba renvoie une chaîne du type CODE(0x10dbf00) (informations sur la où se trouve dans la mémoire de code de cette saba, la connaissance doit être très rare).

Le caractère de soulignement _

Pour la concaténation de chaînes de Perl utilise l'opérateur de point de .. L'opérateur de soulignement _ - Perl n'est pas. Mais l'opérateur de _ il ya dans le populaire Perl bibliothèque Template::Toolkit et dans cette bibliothèque, il est utilisé pour la concaténation.

utf8 drapeau

Dans ce cas si la concaténation participe au moins une ligne qui a un indicateur interne, signifiant que le contenu est en utf8, alors obtenue lignes d'un tel drapeau aussi. Voici un exemple de code qui confirme ce comportement:

▶ Run
#!/usr/bin/perl

use utf8;

my $str_with_flag = 'раз-два-три';

my $str_without_flag = 'one-two-three';

print utf8::is_utf8($str_with_flag) . "\n"; # prints 1
print utf8::is_utf8($str_without_flag) . "\n"; # prints empty string

print utf8::is_utf8($str_with_flag . $str_without_flag) . "\n"; # prints 1
print utf8::is_utf8($str_without_flag . $str_with_flag) . "\n"; # prints 1

Thèmes connexes

Autres articles