Dernière mise à jour | 10 mars 1997 | Auteur | Gilles Maire |
Serveur | http://www.imaginet.fr/ime/perl4.htm | Adresse | Gilles.Maire@UNGI.com |
Ce chapitre donne toutes les librairies livrées avec le langage aussi bien en PERL 4 qu'en PERL 5. Quelques considérations d'ordre général sont données en guise d'introduction
1;
Dans la liste suivante, les parenthèses sont utilisées pour définir les éventuels arguments, elles ne sont pas nécessaires mais il est vivement conseillé de les utiliser pour ne pas se risquer dans les pièges de priorité du langage.
Quand rien n'est spécifié, les fonctions sont supportées par les versions 4 et 5 du langage. Lorsque, la fonction n'est supportée que par la version 5, cela est signalé par le mot (PERL 5).
Les arguments indiqués entre crochet, signifient qu'ils sont optionnels.
recherche la chaîne PATTERN; voir m/PATTERN/
$_="chaine de caractères" ; if ( /^c/) { print "la chaine commence par un c" ; }
recherche la première chaîne PATTERN; cette commande est
utile plutôt pour tester la présence d'une chaîne de caractères
dans un fichier. Cette commande sera suprimée dans les versions
futures de Perl, il ne faut donc pas l'utiliser
donne la valeur absolue d'un nombre.
cette subroutine est calquée sur la procédure accept
d'Unix.
envoie un signal SIGALARM au processus au bout d'un temps donné en
seconde par le paramètre SECONDS
Retour : true en cas de succès, false sinon.
retourne l'arctangente de X Y dans le cercle -PI, PI
bind un socket comme l'appel système Unix du même nom
Retour : true en cas de succès, false sinon.
signale que le fichier sera lu en binaire (comme ftp). Dans ce mode
aucune transformation du fichier n'est faite en cours de
lecture.
l'objet REF est connu comme objet de PACKAGE si celui-ci est donné,
ou du PACKAGE courant.
Retour : la référence
sans argument, retourne le contexte de la subroutine courante, avec
une expression retourne le contexte et le niveau de l'expression en
paramètre.
Exemple : sub exemple {
($var1,$var2,$var3,$var4) = caller ($var4) ;
} ;
&exemple ;
print "$var1 , $var2 , $var3, $var4" ;
Produit le résultat suivant: main , c:\pmail\essai.pl , 4, main'exemple
chdir change le répertoire courant pour EXPR. Si EXPR est omis,
chdir va dans le répertoire d'accueil (home).
Retour : true si le changement a pu avoir lieu, false
sinon
change les droits d'accès d'une liste de fichiers et les met
à la valeur acces qui doit être numérique.
Retour : Le nombre de fichiers qui ont pu être changés de
mode.
Exemple : chmod ( 777, ex1, ex2 );
est une version plus sécurisée de la fonction chop. Retire
tous les caractères suivants le caractère $\ (qui est le séparateur
de champs). Sans argument, chomp opère sur $_. Avec en argument une
liste, l'opération est effectuée sur chaque élément de la
liste.
Retour : le nombre de caractères supprimés.
élimine le dernier caractère de la liste. Ceci est très utilisé
pour retirer la marque de nouvelle ligne d'une chaîne. Sans
argument opère sur la variable $_
Retour : le caractère retiré
$chaine="exemple\n" ; chop ( $chaine ); # $chaine perd son caractère \n
donne à la liste de fichiers LIST les uid et gid voulus.
Retour: le nombre de fichiers dont l'uid et le
gid ont été changés.
Retourne le caractère ASCII représenté par le nombre.
(chr(65)="B")
Même commande que l'appel système du même nom.
ferme un fichier défini par son descripteur. (cf open). En cas de
fermeture d'un PIPE, la fonction attend que le process soit
terminé
Retour : TRUE si la fermeture s'est passé normalement.
ferme un répertoire ouvert par opendir.
connecte le SOCKET à la librairie NAME
calcule le cosinus d'une expression EXPR donné en radian
Chiffre une chaîne de caractères avec la clé. Pour mémoire, la clé
sur les systèmes UNIX est obtenue par la séquence
$pwd = (getpwuid($<))[1]; $salt = substr($pwd, 0, 2);
retourne un booléen indiquant si la valeur EXPR est une expression
définie dans le programme
Supprime la valeur du tableau où elle est définie.
quitte le programme en affichant la chaîne LIST sur le canal
d'erreur.
retourne la valeur de la dernière commande de la séquence de
commandes indiquée par BLOCK
Dans une fin de boucle par exemple, exécute une fois de plus la
dernière instruction de la boucle avant de sortir.
exécute la subroutine (do est remplacé par &)
Retour : retourne le résultat de la dernière commande de la
subroutine.
exécute le fichier EXPR comme un fichier perl
cause un core dump qui permet d'analyser le comportement du fichier
en tant que processus.
à partir d'un tableau associatif (c'est à dire indexé par des
chaînes de caractères) each renvoie un tableau à deux
éléments constitué par la clé et la valeur de l'élément suivant.
Ceci permet de parcourir tous les éléments d'un tableau associatif
sans donner explicitement l'ensemble de ces index.
Si le tableau ne comporte plus d'élément, la valeur False
est retournée.
Le tableau ne doit pas être modifié pendant le parcours.
Exemple : Pour imprimer toutes les valeurs d'environnement,
la séquence suivante est particulièrement bien adaptée :
while (($cle,$valeur) = each %ENV) { print "$cle=$valeur\n"; }
teste si la fin du fichier défini par son descripteur est
atteinte.
Retour : TRUE (1) si la fin du fichier est atteinte.
permet d'exécuter l'expression EXPR en perl. La valeur retournée
est la valeur résultat de la dernière commande traitée par
EXPR.
exécute un programme.
retourne la valeur TRUE si l'expression existe dans un
tableau.
Exemple : print "existe \n" if exists $array{$key};
quitte le programme en cours en envoyant le code de sortie EXPR. Si
EXPR est omis, la valeur 0 est celle par défaut.
calcule l'exponentielle de l'expression EXPR
exécute l'appel système UNIX fcntl.
donne le descripteur de fichier d'un fichier défini par son
descripteur. (voir select())
voir les man pages de flock pour locker un fichier.
exécute une commande fork et retourne l'identification du process
père et 0 pour le process fils.
fonction interne utilisée pour les formats, elle est utilisable en
PERL 5. Voir la partie format.
retourne le caractère suivant lu sur le fichier dont le nom de
descripteur est FILEHANDLE. Dans le cas, où aucun argument n'est
donné, la lecture est faite sur l'entrée standard.
renvoie le nom de login de l'utilisateur courant.
donne l'adresse de la socket connectée avec la socket donnée en
argument.
donne le numéro de groupe du processus identifié par l'identifiant
PID. Si PID est égal à 0, PID est le processus courant.
retourne le PID du process père.
donne la priorité du process (voir l'appel système du même nom)
Ces procédures ont la même signification que les fonctions UNIX du
même nom.
Exemple :
($name,$passwd,$uid,$gid, $quota,$comment,$gcos,$dir,$shell) = getpw* ($name,$passwd,$gid,$members) = getgr* ($name,$aliases,$addrtype,$length,@addrs) = gethost* ($name,$aliases,$addrtype,$net) = getnet* ($name,$aliases,$proto) = getproto* ($name,$aliases,$port,$proto) = getserv*
retourne l'adresse sous forme empaquettée de SOCKET
Exemple :
$sockadr = 'S n a4 x8'; $masockadr = getsockname(S); ($family, $port, $myaddr) = unpack($sockaddr,$mysockaddr);
retoune l'option de la SOCKET demandée
retourne la valeur de EXPR avec les extensions de nom de
fichier comme l'OS le fait.
Exemple :
$valeur = glob ('test.*') ; print "$valeur"; # imprime test.pl si ce fichier est présent sur le disque
convertit dans un tableau de 9 éléments une heure donnée par
EXPR.
($sec,$min,$heure,$jour,$mois,$annee,$wday,$yday,$isdst) =
gmtime(time);
Si EXPR est omis, donne l'heure du système.
à n'utiliser sous aucun prétexte car elle n'est pas implémentée sur
tous les interpréteurs PERL.
évalue si l'expression EXPR est présente dans chaque élément de la
liste LIST et retourne un tableau avec les valeurs de recherche à
vrai ou faux.
Si LIST est résumé à un seul élément, la valeur de retour est le
nombre d'occurrences de EXPR.
EXPR peut contenir toutes les expressions régulières connues en
PERL.
convertit la valeur hexadécimale EXPR en une valeur décimale.
renvoie la position de la première occurrence de SUBSTR dans STR
après POSITION. Si POSITION est omis, commence au début.
Ceci n'est pas réellement une fonction mais une méthode permettant
d'importer un nom depuis un module. La fonction use() utilise cette
méthode.
donne la valeur entière de l'expression EXPR
est identique à l'appel système Unix du même nom.
transforme la liste ou le tableau LIST en une chaîne de caractères
séparés par les caractères EXPR. C'est l'inverse de la fonction split.
Exemple : $ville = join (':', @ville ) ;
renvoie un tableau constitué de toutes les clés du tableau
associatif.
Exemple :
@keys = keys %ENV; @values = values %ENV; while ($#keys >= 0) { print pop(@keys), '=', pop(@values), "\n"; }
envoie le signal numero à une liste de Process LIST. Si le
numéro donné est négatif, kill envoie un process
groupe.
Retour : Le nombre de proccess sur lesquels un signal a été
envoyé.
permet une rupture dans les boucles et les instructions répétitives
pour aller à l'étiquette LABEL.
retourne EXPR en caractères minuscules
retourne EXPR dans la capitalisation d'origine sauf le premier
caractère qui est forcé en minuscule.
donne le nombre de caractères de l'expression EXPR .
un lien LINK sur le fichier FILE.
Retour: 1 en cas de succès, 0 sinon.
identique à l'appel système du même nom
déclare une liste de variables dans le block courant, dans la
subroutine etc.
donne l'heure système dans un tableau à neuf éléments comme suit
:
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)
=localtime(time);
donne le logarithme en base e de EXPR
identique à la fonction stat mais sur un lien.
Cette commande est sans doute la plus usitée en PERL. Elle permet
de tester la présence d'une chaîne de caractères dans une chaîne.
Mais elle est très déroutante car elle peut être utilisée de
nombreuses façons.
évalue BLOCK ou EXPR pour tous les éléments de LIST et
retourne une liste composée des résultats de toutes les
évaluations
Exemple :
@chars = map(chr, @nums); # convertit la liste des nombre de @nums dans les caractères correspondants.
Crée le répertoire REP, avec les permissions (Unix)
MODE
Retour : 1 en cas de succès 0 sinon.
voir les appels systèmes V du même nom.
déclare les variables locales aux bloc courant. A la différence de
la fonction local les variables déclarées sont totalement
masquées à l'extérieur du bloc ce qui est utile pour les
déclarations de subroutines.
sort de la boucle ou de la fonction répétitive en cours pour aller
sur l'instruction suivant le block.
l'opposé de la fonction use.
transforme la valeur octale EXPR en une valeur décimale.
ouvre le fichier EXPR, et lui associe le descripteur FILEHANDLE. Si
EXPR est omis, le nom du fichier est FILEHANDLE. Si le nom du
fichier commence par :
Ouvre un répertoire nommé EXPR avec un descripteur de répertoire
DIRHANDLE. Cette ouverture permettra d'exécuter les fonctions
readdir(), telldir(), seekdir(), rewinddir() et closedir().
Retour : true en cas de succès
donne la valeur numérique décimale du caractère ASCII EXPR. Si EXPR
est une chaîne de caractères, ord donne la valeur ASCII du
premier caractère de la chaîne
transforme un tableau ou une liste de valeurs en une structure
binaire
Retour : la chaîne de caractères contenant la structure
binaire
TEMPLATE est une séquence de caractères qui donne l'ordre et le
type des valeurs comme suit :
ouvre un pipe comme l'appel système du même nom.
donne la dernière valeur d'un tableau.
retourne la position donnée par la dernière commande
m//g.
affiche une chaîne de caractères ou une liste. Retourne une valeur
non nulle en cas de succès. Si FILEHANDLE est spécifié, l'écriture
se fait dans le fichier de descripteur FILEHANDLE. Dans le cas
contraire l'écriture se fait sur la sortie standard.
Exemple1:
$exemple="chaine de caractère\n libre \n " ; #Cette syntaxe permet d'afficher la syntaxe entre <<MARQUE #(tous les symboles doivent être attachés) et la balise MARQUE qui doit # être mise en première colonne print <<MARQUE; impression de $exemple et du reste MARQUECeci affichera le texte après substitution de la chaîne exemple.
Exemple2:
#combinaisons #Cette syntaxe permet d'afficher la séquence en utilisant une seule fois # la commande print print <<MARQUE1 , <<MARQUE2 ; bonjour bonsoir MARQUE1 Comment ça va ? Très bien ! MARQUE2Ceci affichera
bonjour bonsoir Comment ça va ? Très bien !
permet d'afficher la chaîne de caractères comme avec print
mais en utilisant les arguments de la commande sprintf pour le
formatage des données (voir sprintf).
ajoute LIST à la fin du tableau ARRAY.
q/STRING/, qq/STRING/ et qx/STRING/ permettent de coter une portion
de chaîne de caractères sans coter tous ces caractères. q
correspond à une simple cote et qq à une double. Le caractère /
peut être remplacé par n'importe lequel des caractères non contenus
dans STRING.
Exemple :
$toto = q!Qu'il est laid "le bidet"! ;
retourne la valeur de EXPR avec tous les caractères interprétés
comme caractères de contrôle d'expression régulière précédés d'un
antislash.
Exemple :
$valeur = "(3,4)toto.titi" ; $valeur = quotemeta ($valeur) ; print "$valeur\n" # imprime \(3\,4\)toto\.titi
renvoie un nombre aléatoire compris entre 0 et EXPR ou entre 0 et 1
si EXPR est omis.
lit au plus LENGTH octets rangés dans la variable SCALAR depuis le
fichier identifié par le descripteur FILEHANDLE. Le paramètre
OFFSET sert à spécifier que les données lues, seront rangées avec
le décalage OFFSET dans la chaîne de caractères.
Retour : le nombre d'octets lus.
retourne le fichier suivant dans le répertoire ouvert avec le
descripteur de répertoire DIRHANDLE
donne la valeur du lien symbolique EXPR.
reçoit sur le socket SOCKET, LEN octets qui sont stockés dans la
variable SCALAR. FLAGS a le même usage que dans l'appel système du
même nom.
exécute une boucle en se branchant à l'étiquette LABEL sans tester
la condition de sortie de boucle.
retourne la valeur TRUE si EXPR est une référence du type REF. Si
EXPR est du type SCALAR, ARRAY, HASH, CODE GLOB c'est cette valeur
qui est retournée. Dans le cas où EXPR n'est d'aucun de ces types
FALSE est retourné.
renomme le fichier OLDNAME en NEWNAME.
requiert la librairie EXPR.
réinitialise les variables commençant par la valeur EXPR.
retourne la valeur LIST d'une procédure. Si return est omis, la
procédure retournera la valeur de la dernière commande de la
subroutine.
dans un tableau ou une liste LIST, retourne la liste dans l'ordre
inverse.
positionne la valeur du répertoire courant pour la procédure
readdir à la valeur DIRHANDLE.
renvoie la position de la dernière occurrence de SUBSTR dans STR
après POSITION. Si POSITION est omis, commence à la fin de la
chaîne.
supprime le répertoire FILENAME si celui si est vide.
Retour : 1 en cas de succès.
recherche la chaîne PATTERN pour la remplacer par la chaîne
REPLACEMENT. Le paramètre g indique que la substitution doit être
faite sur toutes les occurrences. Le paramètre i indique que les
caractères majuscules ou minuscules sont pris en compte. Le
paramètre e indique que la chaîne REPLACEMENT est une expression à
évaluer et non pas une chaîne de caractères. Les caractères /
peuvent être remplacés par un caractère quelconque. Les caractère
=~ et != permettent d'affecter la chaîne donnée à gauche.
Retour : le nombre de substitutions effectuées.
Exemples :
force EPXR à être interprété en tant que scalaire et retourne la
valeur interprétée.
positionne le pointeur de fichier dont le descripteur est
FILEHANDLE à la position POSITION.
Retour : 1 en cas de succès.
positionne le répertoire courant sur DIRHANDLE, au vu de la
procédure readdir. POS doit être une valeur retournée par
telldir.
donne le descripteur de fichier sélectionné. Ceci permet d'écrire
ou de lire sur un fichier sans utiliser explicitement le
descripteur.
identique à l'appel système du même nom.
identique à l'appel système du même nom.
identique à l'appel système du même nom.
envoie un message sur un socket. Prend le même FLAG que l'appel
système du même nom
positionne le PID comme l'appel système du même nom.
donne la priorité à un process, un groupe de process ou un
utilisateur.
positionne les options du socket courant.
décale les valeurs d'un tableau du dernier vers le premier.
Retour : la première valeur du tableau
Exemple : pour enlever le premier champ de la ligne
"100:Maire:Gilles" on peut faire la chose suivante :
@champs=split (':',"100:Maire:Gilles") ; shift (@champs) ; $ligne =join (':',@champs ) ;
voir les appels système V du même nom au sujet de la gestion de la
mémoire partagée.
coupe une connexion comme l'appel système du même nom.
donne le sinus en radian de EXPR
provoque une attente de EXPR secondes
crée un socket comme l'appel système du même nom.
voir l'appel système du même nom
trie une liste est retourne la liste triée. Si le paramètre
SUBROUTINE est présent, il spécifie le nom d'une procédure qui
retourne un entier inférieur, égal ou supérieur à 0 selon
l'ordonnancement des éléments de la liste. On retrouve souvent ici
les procédures > ou <=.
Exemples:
supprime LENGTH éléments du tableau ARRAY qui sont situés à
l'offset OFFSET et les remplace par les éléments contenus dans
LIST. Si LENGTH et omis, supprime tous les éléments à partir de
OFFSET
Retour : le nombre d'éléments supprimés.
éclate une chaîne de caractères EXPR dans un tableau qui est
retourné. Le caractère PATTERN (par défaut le caractère blanc) sert
de délimiteur de champs. PATTERN peut être plus long qu'un seul
caractère. Le paramètre LIMIT donne le nombre maximum d'éléments du
tableau à remplir, par défaut il n'y a pas de limite. C'est
l'inverse de la fonction join.
Exemple 1 :
($login, $passwd, $uid, $gid, $gcos, $home, $shell) = split(/:/);Exemple 2 :
($login, $passwd, @reste) = split(/:/); # les champs suivants sont rangés dans le tableau @reste
retourne une chaîne de caractères formatée avec les convention C de
printf. Le caractère * n'est pas supporté.
donne la racine carrée de EXPR
positionne la valeur de seuil pour la fonction random
retoune un élément à 13 valeurs donnant les statistiques d'un
fichier comme suit : ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
$atime,$mtime,$ctime,$blksize,$blocks) = stat($filename);
étudie SCALAR et renvoie les chaînes de caractères avant de faire
une opération de dubstitution par exemple. Ceci permet de gagner du
temps. (En cours de rédaction)
extrait la sous chaîne commençant à l'adresse OFFSET et de longueur
LEN dans l'expression EXPR. Si OFFSET est de valeur négative, le
déplacement est pris à partir de la fin de la chaîne. Si LEN est
omis retourne la totalité de la chaîne à partir de l'adresse
OFFSET.
crée un nouveau lien symbolique NEWFILE sur le fichier
OLDFILE.
Retour : 1 en cas de succès.
provoque l'appel système donné par le premier élément de la liste
LIST.
lit LENGTH octets de données depuis le fichier identifié par son
descripteur FILEHANDLE. Le résultat est mis dans la variable
SCALAR. Cette opération est faite par l'appel système read.
Retour : le nombre d'octets lus.
fork un process appelé par la commande exec.
écrit LENGTH octets de données depuis la variable SCALAR sur le
fichier défini par son descripteur FILEHANDLE, avec l'appel système
write.
Le déplacement OFFSET permet de placer les données lues avec un
déplacement.
Retour : le nombre d'octets effectivement écrits.
retourne la position courante du descripteur de fichier
FILEHANDLE.
retourne la position du descripteur de répertoire DIRHANDLE utilisé
par la procédure readdir.
lie une fonction à un paquetage qui permettra l'utilisation
de VARIABLE. Typiquement, ceci est utilisé avec le paquetage DBM.
Un paquetage concernant un tableau associatif doit avoir les
méthodes suivantes : TIEHASH objectname, LIST ; DESTROY this ;
FETCH this, key ; STORE this, key, value ; DELETE this, key ;
EXISTS this, key ; FIRSTKEY this ; NEXTKEY this, lastkey. Un
paquetage concernant un tableau ordinaire comporte les méthodes
suivantes: TIEARRAY objectname, LIST ; DESTROY this ; FETCH this,
key ; STORE this, key, value . Un paquetage concernant les valeurs
scalaires doit avoir les méthodes suivantes : TIESCALAR objectname,
LIST ; DESTROY this ; FETCH this ; STORE this, value.
donne le nombre de secondes écoulées depuis le 1er Janvier 1970 .
Le résultat est fourni sous la forme d'un tableau à quatre éléments
donnant l'heure système et l'heure utilisateur, ainsi que les temps
écoulés pour le process.
Les temps sont ($user,$system,$cuser,$csystem) = times;
retoune un tableau de quatre éléments donnant le temps utilisateur
et le temps CPU en secondes pour le processus en cours et les
processus fils.
traduit toutes les occurrences des caractères présents dans
SEARCHLIST en caractères de remplacement donnés par la liste
REPLACEMENTLIST.
Le caractère c signifie que SEARCHLIST est complémenté, le
caractère d que les caractères trouvés doivent être détruits. Le
caractère s spécifie que les caractères répétitifs doivent être
résumés à un seul d'entre eux.
Retour : le nombre de caractères remplacés ou
détruits.
Exemple :
tronque le fichier ouvert avec le descripteur FILEHANDLE en un
fichier de LENGTH octets.
retoune les caractères de EXPR en majuscule.
retourne les caractères de EXPR avec la première lettre forcée en
majuscule.
met la valeur umask pour le process et retourne l'ancienne valeur
de umask. Si EXPR est omis, retourne la valeur courante de
umask
annule la définition de l'expression EXPR.
supprime la liste de fichiers LIST et retourne le nombre de
fichiers détruits.
fait l'inverse de la procédure PACK, à savoir qu'à partir d'une
structure unpack fabrique un tableau de valeurs. Le
paramètre TEMPLATE a les mêmes définitions que dans pack.
à l'opposé de shift, fabrique un tableau ARRAY à partir d'une liste
LIST.
annule la liaison entre VARIABLE et le package lié par
tie.
change les dates d'accès et de modification sur chacun des fichiers
de la liste. Les deux premiers éléments de la liste doivent être
numériques et concernent la date d'accès et de modification.
Retour : le nombre de fichiers dont la date a pu être
changée.
est équivalent à BEGIN { require MODULE; import MODULE LIST; }
retourne un tableau contenant toutes les valeurs d'un tableau
associatif. Les valeurs sont rendues dans un ordre récupérable avec
les fonctions key() et each ()
traite une chaîne de caractères EXPR comme un vecteur d'entiers non
signés et retourne la valeur du bit spécifié par BITS. Les vecteurs
créés avec vec() peuvent être manipulés avec les opérateurs |,
& et ^. OFFSET est le déplacement à partir duquel on traite
l'octet.
Retour : numéro du process achevé ou -1 en cas d'échec.
attend que le process fils soit terminé.
attend qu'un process identifié par PID se termine .
Retour : numéro du process achevé ou -1 en cas d'échec.
retourne true si le contexte de la procédure qui s'exécute attend
un tableau en entrée et faux si elle attend un scalaire.
produit un message d'erreur sur la console
écrit une donnée sur un fichier dont le descripteur est
FILEHANDLE.
idem tr.