Recherche…


Interpolation de base

L'interpolation signifie que l'interpréteur Perl remplacera les valeurs des variables pour leur nom et certains symboles (qui sont impossibles ou difficiles à saisir directement) pour les séquences de caractères spéciales (il est également appelé échapper). La distinction la plus importante est entre les guillemets simples et doubles: les guillemets doubles interpolent la chaîne incluse, mais pas les guillemets simples.

my $name = 'Paul';
my $age = 64;
print "My name is $name.\nI am $age.\n"; # My name is Paul.
                                         # I am 64.

Mais:

print 'My name is $name.\nI am $age.\n'; # My name is $name.\nI am $age.\n

Vous pouvez utiliser q{} (avec n'importe quel délimiteur) au lieu de guillemets simples et qq{} au lieu de guillemets doubles. Par exemple, q{I'm 64} permet d'utiliser une apostrophe dans une chaîne non interpolée (sinon, elle mettrait fin à la chaîne).

Déclarations:

print qq{$name said: "I'm $age".}; # Paul said: "I'm 64".
print "$name said: \"I'm $age\"."  # Paul said: "I'm 64".

Faites la même chose, mais dans le premier cas, vous n'avez pas besoin d'échapper aux guillemets dans la chaîne.

Si votre nom de variable est en conflit avec le texte environnant, vous pouvez utiliser la syntaxe ${var} pour désambiguïser:

my $decade = 80;
print "I like ${decade}s music!"  # I like 80s music!

Ce qui est interpolé

Perl interpole les noms de variables:

my $name = 'Paul';
print "Hello, $name!\n"; # Hello, Paul!

my @char = ('a', 'b', 'c');
print "$char[1]\n"; # b

my %map = (a => 125, b => 1080, c => 11);
print "$map{a}\n"; # 125

Les tableaux peuvent être interpolés dans leur ensemble, leurs éléments sont séparés par des espaces:

my @char = ('a', 'b', 'c');
print "My chars are @char\n"; # My chars are a b c

Perl n'interpole pas les hachages dans leur ensemble:

my %map = (a => 125, b => 1080, c => 11);
print "My map is %map\n"; # My map is %map

et appels de fonction (y compris les constantes):

use constant {
    PI => '3.1415926'
};
print "I like PI\n";         # I like PI
print "I like " . PI . "\n"; # I like 3.1415926

Perl interpole les séquences d'échappement commençant par \ :

\t                  horizontal tab
\n                  newline
\r                  return
\f                  form feed
\b                  backspace
\a                  alarm (bell)
\e                  escape

L'interpolation de \n dépend du système sur lequel le programme fonctionne: il produira un ou plusieurs caractères de nouvelle ligne conformément aux conventions système actuelles.

Perl n'interpole pas \v , ce qui signifie un onglet vertical en C et d'autres langages.

Le caractère peut être traité en utilisant leurs codes:

\x{1d11e}     𝄞 by hexadecimal code
\o{350436}    𝄞 by octal code
\N{U+1d11e}   𝄞 by Unicode code point

ou noms Unicode:

\N{MUSICAL SYMBOL G CLEF}

Caractère avec des codes de 0x00 à 0xFF dans le codage natif peut être adressé sous une forme plus courte:

\x0a     hexadecimal
\012     octal

Le caractère de contrôle peut être adressé à l'aide de séquences d'échappement spéciales:

\c@      chr(0)
\ca      chr(1)
\cb      chr(2)
...
\cz      chr(26)
\c[      chr(27)
\c\      chr(28) # Cannot be used at the end of a string
                 # since backslash will interpolate the terminating quote
\c]      chr(29)
\c^      chr(30)
\c_      chr(31)
\c?      chr(127)

Les lettres majuscules ont la même signification: "\cA" == "\ca" .

L'interprétation de toutes les séquences d'échappement à l'exception de \N{...} peut dépendre de la plateforme car elles utilisent des codes dépendant de la plate-forme et du codage.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow