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.