Variables spéciales Perl


Le langage Perl définit certaines variables spéciales, généralement préfixées par $, @ ou %, par exemple : $_.

De nombreuses variables spéciales ont un long nom anglais. La variable du système d'exploitation $!

Si vous souhaitez utiliser des variables spéciales avec des noms anglais, vous devez ajouter use English; à l'en-tête du programme. Cela permet l'utilisation de variables spéciales descriptives en anglais.

La variable spéciale la plus couramment utilisée est $_, qui contient le contenu d'entrée et de correspondance de modèles par défaut. L'exemple est le suivant :

#!/usr/bin/perl

foreach ('Google','php','Taobao') {
	print $_;
	print "\n";
}

Exécutez le programme ci-dessus, le résultat de sortie est :

Google
php
Taobao

Nous n'utilisons pas $_ pour afficher le contenu dans l'exemple suivant :

#!/usr/bin/perl

foreach ('Google','php','Taobao') {
	print;
	print "\n";
}

Exécutez le programme ci-dessus, le résultat de sortie est :

Google
php
Taobao

Dans l'exemple, "Google" est affiché en premier, puis "php" est affiché et "Taobao" est enfin affiché.

Dans une boucle itérative, la chaîne de la boucle actuelle sera placée dans $_, puis sortie via print. De plus, print ne spécifie pas de variable de sortie et $_ est utilisé par défaut.

Voici quelques endroits où Perl assumera $_ même s'il n'est pas spécifié :

  • Diverses fonctions unaires, y compris des choses comme ord() et int() De telles fonctions et toutes les opérations de test de fichiers ("-f", "-d") sauf "-t", qui exploite STDIN par défaut.

  • Diverses fonctions de liste telles que print() et unlink().

  • Opérations de correspondance de modèles "m//", "s///" et "tr///" sans utiliser l'opérateur "=~".

  • est la variable d'itération par défaut pour les boucles "foreach" lorsqu'aucune autre variable n'est donnée.

  • Variable d'itération implicite pour les fonctions grep() et map().

  • Lorsque "while" n'a qu'une seule condition et que la condition teste le résultat de l'opération "", $_ est l'emplacement par défaut pour stocker l'enregistrement d'entrée. Cela ne se produit que dans des conditions de test « while ». (Mnémonique : les traits de soulignement peuvent être omis dans des opérations spécifiques.)


Types de variables spéciales

Selon la nature de l'utilisation des variables spéciales, elles peuvent être divisées dans les catégories suivantes :

  • Variables spéciales scalaires globales.

  • Variable spéciale de tableau global.

  • Variable spéciale de hachage global.

  • Poignée de lime spéciale globale.

  • Constantes spéciales globales.

  • Variable spéciale d'expression régulière.

  • Variable spéciale de gestion de fichier.

Variables spéciales scalaires globales

Ce qui suit répertorie toutes les variables spéciales scalaires, y compris les caractères spéciaux et les variables en anglais :

$_Contenu de saisie par défaut et de correspondance de modèles.
$ARG
$.Numéro de ligne actuel du descripteur de fichier pour la dernière lecture
$NR
$/Entrez le séparateur d'enregistrement, la valeur par défaut est le caractère de nouvelle ligne. Si vous utilisez la variable undef, la fin du fichier sera lue.
$RS
$,Séparateur de domaine de sortie
$ OFS
$Séparateur d'enregistrement de sortie
$ORS
$ "Cette variable est similaire à $, mais doit être utilisée pour interpoler les valeurs de tableau et de tranche​​dans des chaînes entre guillemets doubles (ou des chaînes interpolées similaires). La valeur par défaut est un espace.
$LIST_SEPARATOR
$;Le séparateur utilisé lors de la simulation de tableaux multidimensionnels est par défaut ".
$OFMT
$?Renvoie l'état de la dernière commande externe
$CHILD_ERROR
$!La valeur numérique de cette variable est la valeur de errno, et la valeur de la chaîne est la chaîne d'erreur système correspondante
$OS_ERROR ou $ERRNO
$@Le message d'erreur de la commande eval. S'il est vide, cela signifie que la dernière commande eval a été exécutée avec succès
$EVAL_ERROR
$$Le numéro du processus exécutant le script Perl actuel
$PROCESS_ID ou $PID
$<L'ID utilisateur réel du processus en cours
$REAL_USER_ID ou $UID
$>L'ID utilisateur effectif du processus en cours
$EFFECTIVE_USER_ID ou $EUID
$(L'ID utilisateur de groupe réel du processus en cours
$ REAL_GROUP_ID ou $GID
$)ID d'utilisateur de groupe effectif du processus en cours
$EFFECTIVE_GROUP_ID ou $EGID
$0Contient le nom de fichier du script en cours d'exécution
$PROGRAM_NAME
$[Tableau de tableaux L'indice d'un élément, qui est par défaut 0.

$]Numéro de version Perl
$PERL_VERSION
$^DValeur de l'indicateur de débogage
$DEBUGGING
$^EMessages d'erreur étendus du système d'exploitation dans les environnements non UNIX
$EXTENDED_OS_ERROR
$^F Valeur maximale du descripteur de groupe de fichiers
$SYSTEM_FD_MAX
$^H Statut de vérification de la syntaxe activé par le compilateur

$^I Éditeur de contrôle intégré Valeur
$INPLACE_EDIT
$^MTaille du pool de mémoire de sauvegarde

$^ONom du système d'exploitation
$OSNAME
$^PVariable interne spécifiant la valeur de débogage actuelle
$PERLDB
$^TÀ partir du début du nouveau siècle, l'heure en secondes à laquelle le script commence à s'exécuter
$BASETIME
$^WLa valeur actuelle du commutateur d'avertissement
$WARNING
$^XLe nom du Code exécutable binaire Perl
$EXECUTABLE_NAME
$ARGVLe nom de fichier actuel lors de la lecture à partir du descripteur de fichier par défaut

Variable spéciale de tableau global

@ARGV
@ARGV传给脚本的命令行参数列表
@INC在导入模块时需要搜索的目录列表
@F命令行的数组输入
Liste des paramètres de ligne de commande passés au script

%INC

散列表%INC包含所有用do或require语句包含的文件.关键字是文件名,值是这个文件的路径

%ENV

包含当前环境变量

%SIG

信号列表及其处理方式
@INC<🎜>Liste des répertoires à rechercher lors de l'import de modules<🎜><🎜><🎜> @F<🎜 >Entrée de tableau à partir de la ligne de commande<🎜><🎜><🎜><🎜><🎜>Variable spéciale de hachage global<🎜>

%INC

<🎜>
Hash table %INC Contient tous les fichiers inclus avec les instructions do ou require Le mot-clé est le nom du fichier et la valeur est le chemin du fichier <🎜><🎜><🎜>

%ENV

<🎜>
Contient les variables d'environnement actuelles<🎜><🎜><🎜>< p style="text-align:center;">%SIG

<🎜>
Liste des signaux et son traitement <🎜>< 🎜><🎜> <🎜>

Descripteur de fichier spécial global

ARGV

遍历数组变量@ARGV中的所有文件名的特殊文件句柄

STDERR

标准错误输出句柄

STDIN

标准输入句柄

STDOUT

标准输出句柄

DATA

特殊文件句柄引用了在文件中 __END__ 标志后的任何内容包含脚本内容。或者引用一个包含文件中__DATA__ 标志后的所有内容,只要你在同一个包有读取数据,__DATA__ 就存在。

_ (下划线)

特殊的文件句柄用于缓存文件信息(fstat、stat和lstat)。

Constante spéciale globale

__END__

脚本的逻辑结束,忽略后面的文本。

__FILE__

当前文件名

__LINE__

当前行号

__PACKAGE__

当前包名,默认的包名是main。

Variable spéciale d'expression régulière

$n

包含上次模式匹配的第n个子串

$&

前一次成功模式匹配的字符串

$MATCH

$`

前次匹配成功的子串之前的内容

$PREMATCH

$'

前次匹配成功的子串之后的内容

$POSTMATCH

$+

与上个正则表达式搜索格式匹配的最后一个括号。例如:

/Version: (.*)|Revision: (.*)/ && ($rev = $+);

$LAST_PAREN_MATCH

Variable spéciale de descripteur de fichier

$|

如果设置为零,在每次调用函数write或print后,自动调用函数fflush,将所写内容写回文件

$OUTPUT_AUTOFLUSH

$%

当前输出页号

$FORMAT_PAGE_NUMBER

$=

当前每页长度。默认为 60。

$FORMAT_LINES_PER_PAGE

$-

当前页剩余的行数

$FORMAT_LINES_LEFT

$~

当前报表输出格式的名称。默认值是文件句柄名。

$FORMAT_NAME

$^

当前报表输出表头格式的名称。默认值是带后缀"_TOP"的文件句柄名。

$FORMAT_TOP_NAME