Perl - Variables spéciales

Certaines variables ont une signification prédéfinie et spéciale en Perl. Ce sont les variables qui utilisent des caractères de ponctuation après l'indicateur de variable habituel ($, @ ou%), comme $ _ (expliqué ci-dessous).

La plupart des variables spéciales ont un nom long en anglais, par exemple, la variable d'erreur du système d'exploitation $! peut être écrit sous la forme $ OS_ERROR. Mais si vous allez utiliser des noms comme l'anglais, vous devrez mettre une ligneuse English;en haut de votre fichier programme. Cela guide l'interprète pour saisir la signification exacte de la variable.

La variable spéciale la plus couramment utilisée est $ _, qui contient l'entrée par défaut et la chaîne de recherche de modèle. Par exemple, dans les lignes suivantes -

#!/usr/bin/perl

foreach ('hickory','dickory','doc') {
   print $_;
   print "\n";
}

Une fois exécuté, cela produira le résultat suivant -

hickory
dickory
doc

Encore une fois, vérifions le même exemple sans utiliser la variable $ _ explicitement -

#!/usr/bin/perl

foreach ('hickory','dickory','doc') {
   print;
   print "\n";
}

Une fois exécuté, cela produira également le résultat suivant -

hickory
dickory
doc

La première fois que la boucle est exécutée, "hickory" est imprimé. La deuxième fois, "dickory" est imprimé, et la troisième fois, "doc" est imprimé. En effet, à chaque itération de la boucle, la chaîne courante est placée dans $ _ et est utilisée par défaut par print. Voici les endroits où Perl assumera $ _ même si vous ne le spécifiez pas -

  • Diverses fonctions unaires, y compris des fonctions comme ord et int, ainsi que les tests de tous les fichiers (-f, -d) à l'exception de -t, qui vaut par défaut STDIN.

  • Diverses fonctions de liste comme imprimer et dissocier.

  • Les opérations de correspondance de modèle m //, s /// et tr /// lorsqu'elles sont utilisées sans opérateur = ~.

  • La variable d'itérateur par défaut dans une boucle foreach si aucune autre variable n'est fournie.

  • La variable itératrice implicite dans les fonctions grep et map.

  • L'endroit par défaut pour placer un enregistrement d'entrée lorsque le résultat d'une opération d'entrée de ligne est testé par lui-même comme seul critère d'un test while (c'est-à-dire). Notez qu'en dehors d'un test de temps, cela ne se produira pas.

Types de variables spéciales

En fonction de l'utilisation et de la nature des variables spéciales, nous pouvons les classer dans les catégories suivantes -

  • Variables spéciales scalaires globales.
  • Variables spéciales de Global Array.
  • Variables spéciales de hachage global.
  • Gestionnaires de fichiers spéciaux globaux.
  • Constantes spéciales mondiales.
  • Variables spéciales d'expression régulière.
  • Variables spéciales Filehandle.

Variables spéciales scalaires globales

Voici la liste de toutes les variables spéciales scalaires. Nous avons répertorié les noms anglais correspondants ainsi que les noms symboliques.

$ _ L'espace d'entrée et de recherche de modèle par défaut.
$ ARG
$. Numéro de ligne d'entrée actuel du dernier descripteur de fichier lu. Une fermeture explicite sur le descripteur de fichier réinitialise le numéro de ligne.
NR $
$ / Le séparateur d'enregistrement d'entrée; newline par défaut. S'il est défini sur la chaîne nulle, il traite les lignes vides comme des délimiteurs.
$ RS
$, Le séparateur de champ de sortie pour l'opérateur d'impression.
$ OFS
$ \ Le séparateur d'enregistrement de sortie pour l'opérateur d'impression.
$ ORS
$ " Comme "$", sauf qu'il s'applique aux valeurs de liste interpolées dans une chaîne entre guillemets (ou une chaîne interprétée similaire). La valeur par défaut est un espace.
$ LIST_SEPARATOR
$; Le séparateur d'indice pour l'émulation de tableau multidimensionnel. La valeur par défaut est "\ 034".
$ SUBSCRIPT_SEPARATOR
$ ^ L Quel format produit pour effectuer un saut de formulaire. La valeur par défaut est "\ f".
$ FORMAT_FORMFEED
$: Le jeu de caractères actuel après lequel une chaîne peut être interrompue pour remplir les champs de continuation (commençant par ^) dans un format. La valeur par défaut est "\ n" ".
$ FORMAT_LINE_BREAK_CHARACTERS
$ ^ A La valeur actuelle de l'accumulateur d'écriture pour les lignes de format.
$ ACCUMULATEUR
$ # Contient le format de sortie des nombres imprimés (obsolète).
$ OFMT
$? L'état renvoyé par la dernière fermeture de tube, la commande backtick (``) ou l'opérateur système.
$ CHILD_ERROR
$! S'il est utilisé dans un contexte numérique, renvoie la valeur actuelle de la variable errno, identifiant la dernière erreur d'appel système. S'il est utilisé dans un contexte de chaîne, renvoie la chaîne d'erreur système correspondante.
$ OS_ERROR ou $ ERRNO
$ @ Le message d'erreur de syntaxe Perl de la dernière commande eval.
$ EVAL_ERROR
$$ Le pid du processus Perl exécutant ce script.
$ PROCESS_ID ou $ PID
$ < L'ID utilisateur réel (uid) de ce processus.
$ REAL_USER_ID ou $ UID
$> L'ID utilisateur effectif de ce processus.
$ EFFECTIVE_USER_ID ou $ EUID
$ ( L'ID de groupe réel (gid) de ce processus.
$ REAL_GROUP_ID ou $ GID
$) Le gid efficace de ce processus.
$ EFFECTIVE_GROUP_ID ou $ EGID
0 $ Contient le nom du fichier contenant le script Perl en cours d'exécution.
$ PROGRAM_NAME
$ [ L'index du premier élément d'un tableau et du premier caractère d'une sous-chaîne. La valeur par défaut est 0.
$] Renvoie la version plus le niveau de patch divisé par 1000.
$ PERL_VERSION
$ ^ D La valeur actuelle des indicateurs de débogage.
$ DÉBOGAGE
$ ^ E Message d'erreur étendu sur certaines plates-formes.
$ EXTENDED_OS_ERROR
$ ^ F Le descripteur de fichier système maximal, généralement 2.
$ SYSTEM_FD_MAX
$ ^ H Contient des conseils internes du compilateur activés par certains modules pragmatiques.
$ ^ Je La valeur actuelle de l'extension de modification sur place. Utilisez undef pour désactiver la modification sur place.
$ INPLACE_EDIT
^ M $ Le contenu de $ M peut être utilisé comme pool de mémoire d'urgence au cas où Perl meurt avec une erreur de mémoire insuffisante. L'utilisation de $ M nécessite une compilation spéciale de Perl. Consultez le document INSTALL pour plus d'informations.
$ ^ O Contient le nom du système d'exploitation pour lequel le binaire Perl actuel a été compilé.
$ OSNAME
$ ^ P L'indicateur interne que le débogueur efface afin qu'il ne se débogue pas.
$ PERLDB
$ ^ T Heure à laquelle le script a commencé à s'exécuter, en secondes depuis l'époque.
$ BASETIME
$ ^ W La valeur actuelle du commutateur d'avertissement, true ou false.
$ AVERTISSEMENT
$ ^ X Le nom sous lequel le binaire Perl lui-même a été exécuté.
$ EXECUTABLE_NAME
$ ARGV Contient le nom du fichier actuel lors de la lecture depuis <ARGV>.

Variables spéciales de la matrice globale

@ARGV Le tableau contenant les arguments de ligne de commande destinés au script.
@INC Le tableau contenant la liste des emplacements pour rechercher les scripts Perl à évaluer par les constructions do, require ou use.
@F Le tableau dans lequel les lignes d'entrée sont divisées lorsque le commutateur de ligne de commande -a est donné.

Variables spéciales de hachage global

% INC Le hachage contenant les entrées pour le nom de fichier de chaque fichier qui a été inclus via do ou require.
% ENV Le hachage contenant votre environnement actuel.
% SIG Le hachage utilisé pour définir les gestionnaires de signaux pour divers signaux.

Gestionnaires de fichiers spéciaux globaux

ARGV Le descripteur de fichier spécial qui itère sur les noms de fichiers de ligne de commande dans @ARGV. Habituellement écrit comme descripteur de fichier nul dans <>.
STDERR Le descripteur de fichier spécial pour l'erreur standard dans n'importe quel package.
STDIN Le descripteur de fichier spécial pour l'entrée standard dans n'importe quel package.
STDOUT Le descripteur de fichier spécial pour la sortie standard dans n'importe quel package.
LES DONNÉES Le descripteur de fichier spécial qui fait référence à tout ce qui suit le jeton __END__ dans le fichier contenant le script. Ou, le descripteur de fichier spécial pour tout ce qui suit le jeton __DATA__ dans un fichier requis, tant que vous lisez des données dans le même package dans lequel __DATA__ a été trouvé.
_ (souligner) Le descripteur de fichier spécial utilisé pour mettre en cache les informations du dernier opérateur de test statistique, lstat ou de fichier.

Constantes spéciales mondiales

__FIN__ Indique la fin logique de votre programme. Tout texte suivant est ignoré, mais peut être lu via le descripteur de fichier DATA.
__FICHIER__ Représente le nom de fichier à l'endroit de votre programme où il est utilisé. Non interpolé en chaînes.
__LIGNE__ Représente le numéro de ligne actuel. Non interpolé en chaînes.
__PAQUET__ Représente le nom du package en cours au moment de la compilation, ou non défini s'il n'y a pas de package en cours. Non interpolé en chaînes.

Variables spéciales d'expression régulière

$ chiffre Contient le texte correspondant au jeu de parenthèses correspondant dans le dernier motif correspondant. Par exemple, $ 1 correspond à tout ce qui était contenu dans le premier jeu de parenthèses dans l'expression régulière précédente.
$ & La chaîne correspondant à la dernière correspondance de modèle réussie.
$ MATCH
$ ` La chaîne précédant tout ce qui correspond à la dernière correspondance de modèle réussie.
$ PREMATCH
$ ' La chaîne qui suit tout ce qui correspond à la dernière correspondance de modèle réussie.
$ POSTMATCH
$ + La dernière parenthèse correspondant au dernier modèle de recherche. Ceci est utile si vous ne savez pas lequel d'un ensemble de modèles alternatifs correspond. Par exemple: / Version: (. *) | Revision: (. *) / && ($ rev = $ +);
$ LAST_PAREN_MATCH

Variables spéciales Filehandle

$ | Si la valeur est différente de zéro, force un fflush (3) après chaque écriture ou impression sur le canal de sortie actuellement sélectionné.
$ OUTPUT_AUTOFLUSH
$% Le numéro de la page actuelle du canal de sortie actuellement sélectionné.
$ FORMAT_PAGE_NUMBER
$ = La longueur de page actuelle (lignes imprimables) du canal de sortie actuellement sélectionné. La valeur par défaut est 60.
$ FORMAT_LINES_PER_PAGE
$ - Le nombre de lignes restantes sur la page du canal de sortie actuellement sélectionné.
$ FORMAT_LINES_LEFT
$ ~ Le nom du format de rapport actuel pour le canal de sortie actuellement sélectionné. La valeur par défaut est le nom du descripteur de fichier.
$ FORMAT_NAME
$ ^ Le nom du format de haut de page actuel pour le canal de sortie actuellement sélectionné. La valeur par défaut est le nom du descripteur de fichier avec _TOP ajouté.
$ FORMAT_TOP_NAME