Practical Extraction and Report Language est un langage particulièrement bien adapté à la manipulation de chaînes de caractères. Il a été conçu pour être pratique (facile, efficace, complet) plutôt qu'ergonomique.
Il a été créé par Larry Wall.
Ce document est un guide pratique des possibilités de base de PERL.
[...] (concaténation de deux strings) = . (permuttation de deux variables sans utiliser de variable temporaire) 2 Opérateurs de lien Par défaut, de nombreuses fonctions utilisent pour effectuer des calculs: Pour calculer directement sur il faut faire: Si on veut que soit le résultat de l'opération sur Si on veut que soit la valeur de retour de la fonction: L'opérateur est comme mais la valeur de retour est complémentée Opérateur d'intervalle 4 Opérateur x Constructions logiques 1 Expressions 1 Pour les valeurs numériques ( ) ( ) Les opérateurs possibles sont: = et (comparaison) 2 Pour les strings ( eq ) Les opérateurs possibles sont: eq ne le ge lt gt cmp 3 Associations logiques On peut associer les expressions avec: ! [...]
[...] ; last CASE; . # ceci est fait par défaut } Recherche et remplacement 1 Expressions rationnelles (Regular Expression) 2 Recherche est vrai si contient un string qui correspond à RE (sinon, retourne faux). Les expressions de recherche les plus utilisées sont: Ce qui est entre les premières parenthèses est associé à puis pour les parenthèses suivantes, puis . [...]
[...] Perl Introduction PRÉSENTATION HISTORIQUE PRÉCISIONS SUR CE DOCUMENT COMMENT EXÉCUTER UN PROGRAMME SOLUTION SOLUTION SOLUTION VALEURS POSSIBLES ENTIERS RÉELS CARACTÈRES CHAÎNES DE CARACTÈRES TYPES VARIABLES TABLEAUX LISTES RÉFÉRENCES RÉFÉRENCES SUR DES VARIABLES RÉFÉRENCES SUR DES TABLEAUX RÉFÉRENCES SUR DES LISTES RÉFÉRENCES SUR DES FONCTIONS ET DES HANDLES DE FICHIER OPÉRATEUR FLÈCHE TYPES COMPLEXES TABLEAUX DE LISTE STRUCTURES TABLEAUX À DEUX DIMENSIONS OPÉRATEURS OPÉRATEURS DE BASE OPÉRATEURS DE LIEN OPÉRATEUR D'INTERVALLE OPÉRATEUR X CONSTRUCTIONS LOGIQUES EXPRESSIONS POUR LES VALEURS NUMÉRIQUES POUR LES STRINGS ASSOCIATIONS LOGIQUES BLOCS STRUCTURES DE TEST STRUCTURES DE BOUCLE SAUTS D'INSTRUCTION SWITCH RECHERCHE ET REMPLACEMENT EXPRESSIONS RATIONNELLES (REGULAR EXPRESSION) RECHERCHE REMPLACEMENT DE STRING REMPLACEMENT DE CARACTÈRES OU FONCTIONS EXISTANT FONCTIONS NUMÉRIQUES FONCTIONS DE CONVERSIONS FONCTIONS SUR LES TABLEAUX FONCTIONS SUR LES LISTES FONCTIONS SUR LES STRINGS PACK ET UNPACK FONCTIONS SUR LES RÉFÉRENCES FONCTIONS LIÉÉS AU SHELL RETOUR FONCTIONS POUR EXÉCUTER UNE COMMANDE AU NIVEAU DU SHELL FONCTIONS SUR DES FICHIERS TABLEAUX DE FICHIERS FONCTIONS SUR DES RÉPERTOIRES FONCTIONS SUR LA DATE, L'HEURE FONCTIONS DIVERSES FONCTION CRYPT PACK ET UNPACK FONCTIONS ALÉATOIRES FONCTIONS DE L'UTILISATEUR EXEMPLE INTRODUCTIF DÉCLARATION DE LA FONCTION DÉFINITION DE LA FONCTION APPEL DE LA FONCTION AFFICHAGE À L'ÉCRAN FONCTION AVEC VARIABLE STATIQUE FONCTION À COMPORTEMENT DYNAMIQUE FONCTION AYANT UN HANDLE DE FICHIER COMME PARAMÈTRE DÉCLARATIONS DES FONCTIONS EXEMPLE COMPLET UTILISANT DES TABLEAUX PREND UN TABLEAU, AJOUTE 1 À CHAQUE ÉLÉMENT ET RETOURNE LE NOMBRE D'ÉLÉMENTS PREND UN TABLEAU, EN FAIT UNE COPIE, AJOUTE 1 À CHAQUE ÉLÉMENT DE LA COPIE ET RETOURNE LA COPIE PREND DEUX TABLEAUX, AJOUTE 1 À CHAQUE ÉLÉMENT, ET RETOURNE LES NOMBRE D'ÉLÉMENTS PREND DEUX TABLEAUX, EN FAIT 2 COPIES, AJOUTE 1 À CHAQUE ÉLÉMENT DES COPIES ET RETOURNE LES COPIES PAQUETAGES FICHIER PACK.PL FICHIER UTILISE.PL OBJETS FICHIER PERSONNE.PM FICHIER FAMILLE.PM FICHIER TEST.PL RÉSULTAT LIRE ET ÉCRIRE STDIN SUPPRIMER L'ECHO DES CARACTÈRES STDOUT OU STDERR AUTRES FICHIERS LIRE ECRIRE FICHIER À ACCÈS DIRECT CAS PARTICULIER DE FORMATAGE DÉFINITION UTILISATION RÉSULTAT EVAL EXEMPLE OÙ EVAL N'EST PAS UTILE EXEMPLE OÙ EVAL EST UTILE EXEMPLE D'UNE FONCTION SE DÉFINISSANT EN COURS D'EXÉCUTION SIGNAUX DÉBUGGAGE TAINTAGE WEB CLIENT WEB HOSTNAME MAIL DIVERS COMMENTAIRES INTERACTION AVEC LE SYSTÈME LE 4 Références sur des fonctions et des handles de fichier On a le même principe avec les fonctions: $ref = \&fonction; $ref = sub { print "Coucou\n" On a le même principe avec les handles: $ref = \*STDIN; print $ref "Coucou"; 5 Opérateur flèche Pour simplifier les écritures, on peut aussi utiliser l'opérateur flèche: $ici_une_référence est équivalent à ici_une_référence-> Donc, $$ref est équivalent à Alors, on pouvait aussi écrire: La flèche n'est pas obligatoire entre ou ou ou Donc les écritures suivantes sont équivalentes: Types complexes Seulement quelques possibilités sont présentées ici. Pour plus d'information «man perldsc» Tableaux de liste 2 Structures $ref = { nom "Laurent", age 23, adr [ "Champ", "Sevrette"] print print print push @tab, $ref; push @tab, $ref; print print 3 Tableaux à deux dimensions Opérateurs 1 Opérateurs de base + - * / % **(puissance) & ^ ~ ! and or xor not > . [...]
[...] $_="VERSION : 3.2 if *VERSION { $version = } print $version; Voici d'autres exemples: 3 Remplacement de string La syntaxe est: s/RE_a_remplacer/RE_remplaçant/ Si contient un string qui correspond à RE_a_remplacer, on remplace RE_a_remplacer par RE_remplaçant. Voici deux exemples équivalents: Les expressions de remplacement les plus utilisées sont: Voici un autre exemple: 4 Remplacement de caractères ou La syntaxe est: y/caractères_a_remplacer/caractères_remplaçant/ Si contient un caractère présent dans caractères_a_remplacer, on remplace caractères_a_remplacer par caractère_remplaçant. Exemples: Attention, caractères_a_remplacer et caractères_remplaçant sont évalués lors de la compilation, pour des caractères changeant, utiliser eval: eval "tr/$ancien/$nouveau/"; Fonctions existant Les parenthèses autour des paramètres sont facultatives Fonctions numériques 2 Fonctions de conversions 3 Fonctions sur les tableaux 4 Fonctions sur les listes 5 Fonctions sur les strings 6 Pack et unpack sub affhexa { my my print "$chaine foreach (unpack("H2" x 80, $chaine)) { last if ( print } print } sub afftab { print print } my $chaine; my $bin; $bin=pack("aaaaaa", affhexa($bin); # 61h, 62h, 63h, 64h, 00h, 00h $bin=pack("AAAAAA", affhexa($bin); # 61h, 62h, 63h, 64h, 20h, 20h $bin=pack("b8", "10010100"); affhexa($bin); # 29h (lire a l'envers) $bin=pack("B8", "10010100"); affhexa($bin); # 94h $bin=pack("h2h2h2h2" affhexa($bin); # 42h, 38h, d5h, 00h $bin=pack("H2H2H2H2" affhexa($bin); # 24h, 83h, 5dh, 00h $bin=pack("c*", 0x56, 0x34, 0x04); # pour unsigned affhexa($bin); # 56h, 34h, 04h $bin=pack("s*", 0x568F, 0x35A4, 0x04C4); # pour unsigned affhexa($bin); # 8fh, 56h, a4h, 35h, c4h, 04h $bin=pack("n*", 0x568F, 0x35A4, 0x04C4); affhexa($bin); # 56h, 8fh, 35h, a4h, 04h, c4h $bin=pack("v*", 0x568F, 0x35A4, 0x04C4); affhexa($bin); # 8fh, 56h, a4h, 35h, c4h, 04h $bin=pack("i*", 0x5684D2AF, 0x3509FBA4, 0x064D34C4); # pour unsigned affhexa($bin); # afh, d2h, 84h, 56h, a4h, fbh, 09h, 35h, c4h, 34h, 4dh, 06h $bin=pack("l*", 0x5684D2AF, 0x3509FBA4, 0x064D34C4); # pour unsigned affhexa($bin); # afh, d2h, 84h, 56h, a4h, fbh, 09h, 35h, c4h, 34h, 4dh, 06h $bin=pack("N*", 0x5684D2AF, 0x3509FBA4, 0x064D34C4); affhexa($bin); # 56h, 84h, d2h, afh, 35h, 09h, fbh, a4h, 06h, 4dh, 34h, c4h $bin=pack("V*", 0x5684D2AF, 0x3509FBA4, 0x064D34C4); affhexa($bin); # afh, d2h, 84h, 56h, a4h, fbh, 09h, 35h, c4h, 34h, 4dh, 06h $bin=pack("u*", 78,45,46,47); affhexa($bin); # 22h, 2dh, 53h, 40h, 60h, 0ah (uuencode) $bin=pack("aaB8H2H2", "10010100" affhexa($bin); # 61h, 62h, 94h, 83h, 5dh afftab(unpack("aaB8H2H2", # a_b_10010100_83_5d afftab(unpack("aa x2 # a_b_5d (en saute deux) afftab(unpack("aaXa x2 # a_b_b_5d (revient en arriere) 7 Fonctions sur les références if ( ref($ref_var) ) { print "\$ref_var est une reference"; } if ( ref($ref_var) eq "SCALAR" ) { print "\$ref_var est une reference sur un SCALAR"; } Les valeurs possibles de retour de ref() sont: REF SCALAR ARRAY HASH CODE et GLOB 8 Fonctions liéés au shell 1 Retour 2 Fonctions pour exécuter une commande au niveau du shell La variable contient le status retourné par le dernier appel système Fonctions sur des fichiers Tableaux de fichiers use FileHandle; my @tab; FileHandle->new("/etc/passwd") or die; FileHandle->new("/etc/group") or die; my $chaine); $chaine= ; print $chaine; $chaine= ; print $chaine; $tab[1]->close; $tab[2]->close; 6 Fonctions sur des répertoires 7 Fonctions sur la date, l'heure Fonctions diverses 1 Fonction crypt 2 Fichier Famille.pm 3 Fichier test.pl 4 Résultat Lire et écrire 1 STDIN 1 Supprimer l'echo des caractères use POSIX qw(:termios_h); $fd_stdin = fileno(STDIN); $term = POSIX::Termios->new(); $term->getattr($fd_stdin); $oterm = $term->getlflag(); $echo = ECHO ECHOK ICANON; $noecho = $oterm & ~$echo; sub sansecho { $term->setlflag($noecho); $term->setcc(VTIME, $term->setattr($fd_stdin, TCSANOW); } sub avececho { $term->setlflag($oterm); $term->setcc(VTIME, $term->setattr($fd_stdin, TCSANOW); } sansecho(); avececho(); print "Tu as tape: 2 STDOUT ou STDERR 3 Autres fichiers if ( mon_handle ) . [...]
[...] } 3 Structures de test if (EXPR) BLOC if (EXPR) BLOC else BLOC if (EXPR) BLOC elsif (EXPR) BLOC else BLOC une_instruction if (EXPR); $var = (EXPR) ? valeur_si_vrai : valeur_si_faux; 4 Structures de boucle 5 Sauts d'instruction Dans le même principe, on a aussi: 6 Switch Il n'existe pas d'opérateur case ou switch, mais on peut facilement en construire un: CASE: { = do { . ; last CASE; do { . [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture