POD2-FR
view release on metacpan or search on metacpan
FR/perldata.pod view on Meta::CPAN
tous des noms différents. Les noms qui commencent par une lettre ou un
caractère souligné peuvent aussi contenir des chiffres et des
soulignés.
X<identifiant, sensibilité à la casse> X<casse>
Il est possible de remplacer un tel nom alphanumérique par une expression qui
retourne une référence au type approprié. Pour une description de ceci, voir
L<perlref>.
Les noms qui commencent par un chiffre ne peuvent contenir que des
chiffres. Les noms qui ne commencent pas par une lettre, un souligné,
un chiffre ou un accent circonflexe (donc un caractère de contrôle)
sont limités à un caractère, tels C<$%> or C<$$> (La plupart de ces
noms d'un seul caractère ont une signification prédéfinie pour
Perl. Par exemple, C<$$> est l'ID du processus courant).
=head2 Contexte X<contexte> X<contexte scalaire> X<contexte de liste>
L'interprétation des opérations et des valeurs en Perl dépend parfois des
exigences du contexte de l'opération ou de la valeur. Il existe deux contextes
majeursE<nbsp>: le contexte de liste et le contexte scalaire. Certaines
opérations retournent des valeurs de liste dans les contextes qui réclament
une liste, et des valeurs scalaires autrement Ssi ceci est vrai pour une
opération alors cela sera mentionné dans la documentation pour cette
opération. En d'autres termes, Perl surcharge certaines opérations selon que
la valeur de retour attendue est singulière ou plurielle. Certains mots en
français fonctionnent aussi de cette façon, comme «E<nbsp>lysE<nbsp>» et
«E<nbsp>dosE<nbsp>».
Réciproquement, une opération fournit un contexte scalaire ou de liste à
chacun de ses arguments. Par exemple, si vous ditesE<nbsp>:
int( <STDIN> )
L'opération int fournit un contexte scalaire pour l'opérateur E<lt>STDINE<gt>,
qui répond en lisant une ligne depuis STDIN et en la passant à l'opération
int, qui trouvera alors la valeur entière de cette ligne et retournera
cela. Si, au contraire, vous ditesE<nbsp>:
sort( <STDIN> )
alors l'opération sort fournit un contexte de liste pour E<lt>STDINE<gt>, qui
se mettra à lire toutes les lignes disponibles jusqu'à la fin du fichier, et
passera cette liste de lignes à la routine de tri, qui triera alors ces lignes
et les retournera en tant que liste à ce qui est le contexte de sort, quel
qu'il soit.
L'affectation est un petit peu spéciale en ce sens qu'elle utilise son
argument gauche pour déterminer le contexte de l'argument droit. L'affectation
à un scalaire évalue la partie droite dans un contexte scalaire, tandis que
l'affectation à un tableau ou à un hachage évalue la partie droite dans un
contexte de liste. L'affectation à une liste (ou à une tranche, qui est juste
une liste de toute façon) évalue aussi la partie droite dans un contexte de
liste.
Lorsque vous utilisez le pragma C<use warnings> ou l'option de ligne de
commande B<-w> de Perl, il arrive que vous voyiez des avertissements sur un
usage inutile de constantes ou de fonctions dans un «E<nbsp>contexte
videE<nbsp>» («E<nbsp>void contextE<nbsp>», NDT). Le contexte vide signifie
juste que la valeur a été abandonnée, comme pour une instruction ne contenant
que C<"fred";> ou C<getpwuid(0);>. Il compte toujours pour un contexte
scalaire pour les fonctions qui se soucient de savoir si elles sont ou non
appelées dans un contexte scalaire.
Les sous-programmes définis par l'utilisateur peuvent se soucier d'avoir été
appelés dans un contexte vide, scalaire ou de liste. La plupart des
sous-programmes n'en ont toutefois pas besoin. C'est parce que les scalaires
et les listes sont automatiquement interpolés en listes. Voir C<wantarray()>
dans L<perlfunc> pour une façon dont vous pourriez discerner dynamiquement le
contexte d'appel de votre fonction.
=head2 Valeurs scalaires X<scalaire> X<nombre> X<chaîne de caractères> X<référence>
Toute donnée en Perl est un scalaire, un tableau de scalaires ou un hachage de
scalaires. Les variables scalaires peuvent contenir des une seule valeur de
trois formes différentesE<nbsp>: un nombre, une chaîne ou une référence. En
général, la conversion d'une forme à une autre est transparente. Bien qu'un
scalaire ne puisse pas contenir des valeurs multiples, il peut contenir une
référence à un tableau ou à un hachage qui à son tour contient des valeurs
multiples.
Les scalaires ne sont pas nécessairement une chose ou une autre. Il
n'y a pas d'endroit où déclarer qu'une variable scalaire doit être de
type «E<nbsp>chaîneE<nbsp>», de type «E<nbsp>nombreE<nbsp>», de type
«E<nbsp>référenceE<nbsp>», ou n'importe quoi d'autre. Du fait de la
conversion automatique des scalaires, les opérations qui en retournent
n'ont pas besoin de se soucier (et en fait ne le peuvent pas) de
savoir si leur appelant attend une chaîne, un nombre ou une
référence. Perl est un langage contextuellement polymorphe dont les
scalaires peuvent être des chaînes, des nombres, ou des références (ce
qui inclut les objets). Tandis que les chaînes et les nombres sont
considérés comme presque la même chose pour pratiquement tous les
usages, les références sont des pointeurs au typage fort et impossible
à forcer, avec comptage de référence intégré et invocation de
destructeur.
Une valeur scalaire est interprétée comme TRUE (VRAIE, NDT) au sens booléen si
ce n'est pas une chaîne vide ou le nombre 0 (ou son équivalent sous forme de
chaîne, «E<nbsp>0E<nbsp>»). Le contexte booléen est juste un genre spécial de
contexte scalaire, où aucune conversion vers une chaîne ou un nombre n'est
jamais effectuée.
X<booléen> X<vrai> X<faux> X<vérité>
Il existe en fait deux variétés de chaînes nulles (parfois appelées des
chaînes «E<nbsp>videsE<nbsp>»), l'une définie et l'autre non. La version
définie est juste une chaîne de longueur zéro, telle que C<"">. La version non
définie est la valeur qui indique qu'il n'existe pas de vraie valeur pour
quelque chose, comme lorsqu'il s'est produit une erreur, ou à la fin d'un
fichier, ou lorsque vous vous référez à une variable ou à un élément de
tableau ou de hachage non initialisé. Bien que dans les anciennes versions de
Perl, un scalaire indéfini ait pu devenir défini lorsqu'il était utilisé pour
la première fois dans un endroit où une valeur définie était attendue, cela ne
se produit plus, sauf dans de rares cas d'autovivification tels qu'expliqués
dans L<perlref>. Vous pouvez utiliser l'opérateur defined() pour déterminer si
une valeur scalaire est définie (cela n'a pas de sens pour les tableaux ou les
hachages), et l'opérateur undef() pour produire une valeur indéfinie.
X<undef> X<defined> X<défini> X<indéfini> X<nulle> X<chaîne nulle>
Pour trouver si une chaîne donnée est un nombre différent de zéro
valide, il suffit parfois de la tester à la fois avec le 0 numérique
et le «E<nbsp>0E<nbsp>» lexical (bien que ceci provoquera du bruit si
( run in 0.663 second using v1.01-cache-2.11-cpan-6aa56a78535 )