|
|
|
 |
PERL - Practical Extraction and Report
Language |
Description :
Perl est un langage optimisé pour extraire des informations
de fichiers textes et imprimer des rapports basés sur
ces informations. C'est aussi un bon langage pour de nombreuses
tâches d'administration système. Il est écrit dans
le but d'être pratique (simple à utiliser, efficace,
complet) plutôt que beau (petit, élégant,
minimaliste).
Mais comment fonctionne Perl ? Contrairement à TCL/TK qui interprète
ligne après ligne, comme du bon vieux basic, l'interpréteur
Perl compile les scripts Perl pour ensuite les exécuter,
ce qui permet deux choses: des vérifications de syntaxe,
et une très grande vitesse d'exécution. Perl est
séquentiel et Orienté Objet, donc libre à son
utilisateur de faire son choix. Mais il dispose en standard
de nombreuses fonctions qui font que sa portabilité d'un
système d'exploitation à un autre est extrême !
On peut même exporter du code Perl en C, et compiler des
interfaces à des librairies existantes pour les utiliser
en Perl ! Perl est aussi le seul langage de type script qui
puisse être intégré à Apache, le
transformant en langage compilé et caché en mémoire,
le rendant aussi performant que du C !
Le Perl combine (du point de vue de l'auteur) les meilleures
fonctionnalités de C, sed,
awk et sh, de telle manière
que les personnes familiarisées à ces langages ne devraient
avoir aucune difficulté avec celui-ci. La syntaxe se
rapproche presque totalement de celle du C. Contrairement à
la plupart des utilitaires Unix, Perl ne limite pas arbitrairement
la taille des données -- si vous avez assez de mémoire,
Perl peut remplir une chaîne de caractères avec
le contenu total d'un fichier. Il n'y a pas de niveau maximum
à la récursivité. Et les tables utilisées
par les tableaux de hachage (anciennement appelé "tableaux
associatifs") croissent dès que nécessaire afin
de garantir un bon niveau de performance. Perl utilise des techniques
sophistiquées de recherche de motif pour pouvoir traiter
très rapidement de très grandes quantités
de données. Bien qu'optimisé pour le traitement
des fichiers textes, Perl peut aussi traiter des données binaires,
et faire que des fichiers dbm soit vus commes des tableaux de
hachage. Les scripts Perl ayant leurs setuid bits positionnés
sont plus sûrs que des programmes C grâce à
des mécanismes de suivi de flot de données qui
permettent d'éviter de nombreux trous de securités
particulièrement stupides.
Si vous avez un problème pour lequel vous auriez utilisé
sed, awk ou sh,
mais qui dépasse leurs capacités ou qui doit fonctionner
un peu plus rapidement et que vous ne voulez pas l'écrire
en C, alors le Perl est pour vous. Il existe aussi des convertisseurs
pouvant transformer vos scripts sed et awk
en scripts Perl.
Fonctionnalités :
- De nombreuses améliorations à l'utilisation
Il est maintenant possible d'écrire du code Perl
nettement plus lisible (même dans les expressions
régulières). Les variables absconses peuvent
être remplacées par des identificateurs plus
compréhensibles. Les messages d'erreurs sont plus
detaillés, et les messages optionnels d'avertissements
devraient indiquer une grande majorité des erreurs
peuvant être commises par un novice. On ne le dira
jamais assez, mais lorsque vous obtenez un comportement
erratique, essayez de lancer votre script avec le modificateur
-w !!! De toutes manières, même
si n'avez pas de comportement erratique, essayez d'utiliser
le modificateur -w.
- Une grammaire simplifiée
La taille de la nouvelle grammaire yacc fait environ la
moitié de la précédente. Un très
grand nombre de règles arbitraires ont été
régularisées. Le nombre des mots réservés
a été réduit de plus de 2/3. Malgré
celà, presque tous les anciens scripts Perl fonctionnent
sans aucun changement.
- Portée lexicale
Les variables Perl peuvent maintenant être déclarées
à l'interieur d'une portée lexicale, de la
même manière que les variables ``auto'' en
C. Non seulement, c'est plus efficace, mais çà
contribue à une plus grande sécurité
pour la programmation de code réutilisable. Les routines
anonymes disposent ainsi d'un couplage fort des variables
locales.
- Structure de données performantes
N'importe quelle variable scalaire, y compris un élément
de tableau, peut maintenant contenir une référence
vers une autre variable ou une routine. Il devient simple
de créer des variables et routines anonymes. Perl
gère pour vous les compteurs de référence.
- Modularité et réutilisabilité
La bibliothèque Perl est maintenant constituée
de modules qui peuvent être partagés facilement
entre plusieurs paquetages. Un paquetage peut choisir d'importer
tout ou parties de l'interface publiée d'un module.
Les pragmas (directives de compilation) sont définis
et utilisés par le même mécanisme.
- Programmation orientée objet
Un paquetage peut fonctionner comme un classe. L'héritage
multiple dynamique et les méthodes virtuelles sont
supportées de manière très directe
et n'introduisent que peu de changement syntaxiques. Les
descripteurs de fichier sont maintenant gérés
comme des objets.
- Intégrable et extensible
Perl peut maintenant être intégré simplement dans vos applications
en C ou C++, et peut indifférement appeler ou être
appelé par vos routines à travers une interface
documentée. Le préprocesseur XS fourni facilite
l'intégration de routines en C ou C++ dans une application
Perl. Le chargement dynamique de module est supporté,
et Perl lui-même peut être transformé
en une librairie dynamique.
- Conforme POSIX
Un apport majeur est la création du module POSIX, qui fournit
l'accès à toutes les routines et définitions
POSIX, au travers de classes d'objets lorsque c'est approprié.
- Constructeurs et destructeurs de paquetage
Les nouveaux blocs BEGIN et END sont exécutés lorsque la
compilation du paquetage s'achève et juste à la sortie du
programme. Ils peuvent être utilisés dans un
mode dégradé correspondant à celui
du awk en utilisant les modificateurs -p
ou -n.
- De multiples implémentations de DBM en simultané
Un script Perl peut maintenant accèder à
des fichiers DBM, NDBM, SDBM, GDBM et Berkeley DB simultanément.
En fait, l'ancienne interface dbmopen a été
généralisée pour permettre à
n'importe quelle variable d'être rattachée
à une classe d'objet définissant ses propres
méthodes d'accès.
- Les définitions des routines peuvent desormais
être chargées automatiquement
En fait, le mécanisme AUTOLOAD vous permet aussi de définir
n'importe quelle sémantique arbitraire pour l'appel
de routines indéfinies. Ce n'est pas seulement du
chargement automatique.
- Amélioration des expressions régulières
Vous pouvez maintenant spécifier des quantificateurs
qui ne soit pas avides. Il est aussi possible de faire des
regroupements sans créer de références.
Tout comme vous pouvez ajouter des espacements et des commentaires
dans les expressions régulières. Un mécanisme
conséquent permettant d'étendre les capacités
des expressions régulières a été
ajouté mais reste presque entièrement compatible.
- Une pléthore de modules disponibles
Le CPAN (Comprehensive Perl Archive Network ou Réseau
d'archives détaillées de Perl) décrit dans
la page de manuel perlmodlib contient des centaines
de modules prêts à l'emploi fournissant une
quantité astronomique de code réutilisable.
Vous trouverez le site miroir le plus proche de chez vous
à l'adresse http://www.perl.com/CPAN.
- Compilateur
Bien qu'il ne soit pas encore en production, il existe
un compilateur Perl-vers-C qui fonctionne. Il peut générer
un byte code (code objet) portable, du simple C ou bien
du code C optimisé.
Liens officiels :
Mes signets :
|
|