supports de cours de VisualSphere SoftwareTools AG
supports de cours de VisualSphere SoftwareTools AG
Cours de programmation en PERL
Introduction à Perl
Perl, ou bienvenue dans l'hybris
Perl était à l'origine juste un langage scripte spécialisé dans le
traitement de fichiers textes et comme glu pour applications Unix.
Le but de ce langage était de rendre les tâches répétitives faciles et
automatiques, les problèmes difficiles faisables, et non de se conformer à des
théories de langages de programmation énoncées par des informaticiens.
Ceci comparé à des langages modernes qui permettent de résoudre facilement
certaines classes de problèmes, mais qui ne permettent que difficilement de
résoudre les autres tâches, et en ne considérant même pas les vieux langages
considérés comme normes industrielles qui rabaissent tout problème au rang de
casse tête chinois.
- Perl est un langage interprété
- Perl est un langage compilé
- Les variables Perl ne sont pas ou peu typées
- Perl permet une syntaxe naturelle
- La bibliothèque de fonctions pour Perl est immense
- Perl fonctionne sans modification sur une large palette de plates-formes
- En Perl il est possible de programmer proprement des petits et grands
projets.
- Perl peut être l'enfer sur terre
- O'Reilly, Perl Camel Book,
(http://www.unix.org.ua/orelly/perl/)
- perldoc, perlop, perlfunc, perlvar, perldiag, perlfaq, etc
- http://www.cpan.org
- man Perl
- comp.lang.perl.moderated
- http://perldesignpatterns.com/
- Le format du fichier:
- Types de variables
- Variables prédéfinies ou système
- Un bloc de code est délimité par des accolades
- Définir un espace de noms: package
- Utiliser un espace de noms: use
- Pragma Perl: Le réglage use strict
- Déclaration propre (mais non mandataire) des variables Perl
- print
- Variable spéciale: le manipulateur de fichiers
- Tests logiques, sur chaînes de caractères et sur fichiers
- Vrai n'est pas 0 et n'est pas indéfini
- Structures de test
- Boucles
- L'opérateur de recherche est /terme a chercher/
- Chercher et remplacer: s/à chercher/remplacement/
- Exploser une chaîne de caractères en une liste: split(/séparateur/,chaîne)
- L'inverse, créer une chaîne de caractères à partir d'une liste:
join(lien, @liste)
- Expressions de recherche
- Une fonction commence par sub bloc
- Les arguments se retrouvent dans @_
- La valeur de retour correspond au résultat de la dernière ligne
- Il est naturellement encouragé d'utiliser return
- Un module Perl est un scripte Perl qui s'appelle .pm
- Un module est un scripte Perl qui retourne 1 après son chargement
- Un paquetage est une section de code qui commence par package nom
- Accès de l'extérieur: nomDePaquet::construction
- Plain Old Documentation
- Paragraphes
- Paragraphes pré-formatés
- Modificateurs, Séparateurs de texte, =commandes
- I<texte> italique
- B<texte> met en gras
- C<texte> Code, ou fonte style machine à écrire
- L<texte> lien référence hypertexte
- F<texte> fichier référence un fichier
- X<texte> entrée pour un glossaire
- Lire directement: perldoc module/fichier
- Test de syntaxe: podchecker
- Convertir en d'autres formats:
- Cacher la documentation à la fin du fichier: __END__
- L'importance cruciale du contexte: Booléen, Scalaire ou Liste
- Data::Dumper
- Carp::croak
- CPAN
- Getopt::Long
- Concatenation de chaines: .
- Longueur d'une chaine de caracteres: length
- Découper une partie d'une chaine: substr
- Changer le capitalisation: lc, lcfirst, uc, ucfirst
- Encrypter une phrase: crypt
- D'autres fonctions: perldoc perlfunc / Functions for SCALARs or strings
- La valeur non défini (undef): $var = undef
- Rajouter ou enlever des valeurs de la tête ou queue d'une liste: push/pop, shift/unshift
- extraire/remplacer des sous-listes: splice Liste, début, fin,
remplacement
- casser une chaîne de caractères en une liste, et l'inverse: split/join
regexp, chaîne/liste
- trier le contenu d'une liste:sort
- Obtenir toutes les clés de la liste: keys
- Obtenir toutes les valeurs de la liste: values
- Enlever une paire clé/valeur de la liste: delete
- Récupérer les paires clé/valeur: each
- Tester la présence d'une clé, même si la valeur est undef: exists
- Extraire d'une liste ou d'un tableau un sous ensemble: grep
- Les caractères meta
- L'opérateur d'assignement d'opération =˜,!˜
- Comptage des occurrences: {min,max},+,* etc
- Capturer des sous expressions: ()
- Éviter l'interprétation comme expression régulière: <BSL>Q et <BSL>E
- Les modificateurs de recherche: i,mg
- Grouper une expression sans la captuer: (?: )
- changer localement un modificateur global: (?i)
- Expression régulière avec regard sur le suivant: (?=expr)
- Paquetage: package
- Modules
- Copier des processus: fork
- use DBI
- Se connecter à une base: connect
- préparer une requete: prepare
- Exécuter (x fois) une requète: execute
- Exécuter une requète manuelle: do
- Se déconnecter de la base: disconnect
- récupérer l'oid de la derniere insertion: last_insert_id
- Compter le nombre de lignes de résultat: rows
- récupérer toutes les données retournéesdans un tableau de hash: fetchall_hashref
- Selectionner et récupérer dans un tableau de hash: selectall_hashref
- valider/invalider une transaction: commit/rollback
- Finaliser un gestionnaire de requète: finish
- L'exemple
- En première approche un objet est simplement une référence (par exemple
sur un tableau indexé)
- Une classe correspond au paquetage
- Les méthodes sont les fonctions définies dans ce paquetage
- Cycle de vie des objets
- L'héritage se fait en spécifiant les parents dans ISA: our @ISA = (Toto, Titi)
- About this document ...