Section courante

A propos

Section administrative du site

 Langage  Installation  Elément  Tutoriel  Programmation  Bibliothèque  Cadre d'application  IDE  Annexe  Aide 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
Installation sous le système d'exploitation Windows XP
Introduction
Les remarques
Les opérateurs
Les expressions régulières (regex)
Les types de données
Les instuctions conditionnelles
Les instructions de boucles
Définition de fonction
Référence de fonctions
Référence de pragmas
Référence de modules
Catégorie
Exécution
Fichier
Hachage
Liste
Mathématique
Processus
Scalaires
Tableau
Taille fixe
Trigonométrie
Les premiers pas
Bonjour
Astronomie
Base de données
Biochimie
Colorimétrie
Conversion
Fichier
Finance
Fractale
Géographie
Géométrie
Gouvernement
Histoire
Jeux & stratégies
Mathématique
Médicale
Météorologie
Océanographie
Sport
Temps
Tri
Trigonométrie
Validation
Web
Phase lunaire
Table MySQL
Formulaire MySQL
Calcul du calcium corrigé
Calcul le taux d'alcoolémie
Boite en 3D de couleur RVB
Bin,Hex,Base62,...
Lecture d'un fichier texte séquentiel
Ecriture d'un fichier texte séquentiel
IPaymt/Interet
NPer
PPaymt/Principal
Triangle de «Sierpinski»
Distance en Km entre deux longitudes et latitudes
Aire d'un cercle
Aire d'une surface de prisme rectangulaire
Aire d'un triangle
Distance entre deux points
Treillis
Taxe de vente canadienne
Chiffre romain
Tours d'Hanois
Ackermann
Exp
Factoriel
Fibonacci
Log
Nombre premier
Odd
Random
Sqrt
Triangle Pascal
Hauteur utérine
Unité de mesure
Fréquence des vagues
Hockey
Année bissextile
Calendrier
Date de la Pâque
Heure courante
FirstDayOfMonth
Horloge à aiguille
Tri à bulle (Bubble Sort)
Tri Shell Sort
ArcCos
ArcSin
Atn/ATan/ArcTan/ArcTangente
Cos
Sin
Courriel
Bonjour
Optimisation
AJAX
LibreSSL
OpenSSL
Catalyst
CGI::Application
Dancer
Komodo IDE
Padre
Perl Express
SET's Editor
Téléchargement
Base de connaissances
Bibliographie
Préface
Notes légal
Dictionnaire
Recherche
Fiche technique
Type de produit : Langage de programmation
Auteur : Larry Wall
Date de publication : 1987

Introduction

Le langage de programmation Perl est l'abréviation de «Practical Extraction and Report Language» (soit Langage Pratique d'Extraction et de Rapport en français). Ce langage fut créé par Larry Wall en 1987 en s'inspirant du «AWK».

Ce langage est actuellement utilisé pour les administrateurs systèmes et dans les domaines scientifiques comme la bioinformatique (BioPerl).

Avantages

Le langage de programmation Perl a de nombreuses raisons d'être populaire et recherché. Voici les avantages que procure le langage de programmation Perl :

Programmation

Ce langage de programmation est souvent perçu comme un langage de programmation système, bien qu'il était énormément utilisé pour la génération de page HTML dynamique au début du Web, il est en constante perte de popularité à se niveau. Par contre, les administrateurs systèmes raffole toujours autant de se langage. Bien que le PHP a pris la place de se langage dans le domaine du Web, il est tout de même intéressant de le connaitre, puisque de nombreux hébergeurs de sites PHP, demande des notions d'utilisations de Perl pour les «cronjobs» par exemple. Il a une bonne adaptation avec le système d'exploitation Linux et FreeBSD, comme par exemple, si on veut lancer programme Bonjour en ligne de commande, on procédera comme suit :

perl -w -e 'print("Bonjour\n");'

De plus, il s'exécute sur presque tous les systèmes d'exploitation : Mac OS X, Windows 2000, Windows XP, Windows Vista, Windows 7, Windows 8, Windows Server 2003, Windows Server 2008, FreeBSD, AIX, HPUX, Solaris (SunOS), SkyOS, Linux, OS/2 Warp 4 et eComStation.

En dehors du fait qu'il a un syntaxe extrêmement courte et une surpuissante des expressions régulières (regex), il en demeure pas moins qu'il a une imposante bibliothèque par l'intermédiaire de (CPAN (http://search.cpan.org/) et PPM), des fonctions et d'utilitaires de toutes sortes. Il est par exemple, possible en Perl d'effectuer la sauvegarde d'un document Excel sans utilisé aucune composante du système d'exploitation Windows.

Autre détail, où de nombreux programmeurs ont tendances à se faire prendre lorsqu'il commence à programmer avec le Perl, c'est la comparaison des chaînes de caractères ne s'effectue pas de la même façon que les valeurs numériques. Prenons par exemple :

  1. #!/usr/bin/perl
  2.  
  3. # Les comparaisons de chaine de caracteres se font avec les mots réservés : eq, ne, ge, ...
  4. if("vrai" eq "vrai") {
  5.     print "chaine vrai vaut vrai\n";
  6. } else {
  7.     print "chaine vrai vaut faux\n";
  8. }
  9.  
  10. # Les comparaisons de valeurs numériques se font avec des symboles : ==, >, <,...
  11. if(1 == 1) {
  12.     print "nombre 1 vaut 1\n";
  13. } else {
  14.     print "nombre 1 ne vaut pas 1\n";
  15. }

Ainsi, les types de données ne s'évalue pas tous de la même façon en Perl, même si l'opérateur «==» est supporté, il n'effectue pas le bon type de comparaison sur une chaine de caractères. Les dernières versions de Perl, retourne une message d'attention lorsqu'une situation comme celle-ci se produit.

Ce qui en fait un langage épouvantable pour certains, c'est le fait que se langage soit compliqué à programmer et sa lisibilité laisse souvent à désirer. Les choix du concepteur de se langage afin qu'il soit rapide même si interprété en font un langage à l'apparence bizarre et parfois carrément ésothérique. Il est, entre autre, assez curieux de constater la façon dont il gère ses remarques documentaires. Lorsqu'on exécute un programme écrit en langage de programmation Perl sous des systèmes d'exploitation Unix, Linux ou FreeBSD, il est fortement recommandé d'ajouter la ligne suivante au début du code source afin que le système comprenne bien qu'il s'agit d'un script Perl :

#!/usr/bin/perl -w

De plus, en général, le fichier de code source écrit en Perl porte l'extension «.pl».

Liste des versions

Version Date Commentaires
Perl 1.0 18 décembre 1987 Larry Wall développe la première version du Perl à temps partiel pendant qu'il travail chez Unisys Corporation.
Perl 2 1988 Amélioration du moteur des expressions régulières (regex).
Perl 3 1989 Changement mineurs
Perl 4 1991 Changement mineurs
Perl 4.036 1993 Changement mineurs
Perl 5.000 17 octobre 1994 Nouveau moteur d'analyse du langage de programmation Perl.
Perl 5.001 13 mars 1995 Changement mineurs
Perl 5.002 29 février 1996 Ajout de nouveaux prototypes.
Perl 5.003 25 juin 1996 Correctif de sécurité.
Perl 5.004 15 mai 1997 Inclusion de module universelle.
Perl 5.005 22 juillet 1998 Amélioration des regex, l'opérateur «qr//», nouveau crochet dans les modules B::*, support pour le système d'exploitation BeOS,...
Perl 5.5 22 juillet 1998 Changement mineurs
Perl 5.6 22 mars 2000 La numérotation des versions a été modifiée au format 'revision.version.subversion', la représentation interne des chaînes de caractères est remplacée par UTF-8 et le support EBCDIC n'est plus utilisé, meilleur support de la monnaie, les littéraux de chaîne de caractères peuvent être écrits en utilisant des ordinaux de caractères, nouvelle syntaxe pour les attributs de sous-programme (le pragma «attrs» est maintenant obsolète), prise en charge des fichiers volumineux, prise en charge des nombres binaires, inclusion de la distribution JPL (Java Perl Lingo) dans Perl,...
Perl 5.8 18 juillet 2002 Prend en charge Unicode 3.2.0, les expressions régulières (regex) fonctionnent maintenant avec Unicode, prise en charge des codages non latins via le module Encode, introduction de processus léger d'interprétation, nouvelle intégration de PerlIO, précision numérique améliorée pour la conversion de nombre de chaînes de caractères via une routine intégrée, support 64 bits finalisé, nouveaux modules : Digest::MD5, File::Temp, Filter::Simple, libnet, List::Util, Memoize, MIME::Base64, Scalar::Util, Storable, Switch, Test::More, Test::Simple, Text::Balanced, Tie::File,...
Perl 5.10 18 décembre 2007 Prend un charge Unicode 5.0, nouveau pragma feature, nouvelle opérateur //, nouveau mot réservé switch, nouveau say intégré,...
Perl 5.12 2012 Support du temps après la date de 2037, nouvelle syntaxe permet aux développeurs de spécifier les numéros de version des modules directement dans les instructions «package», Perl avertit maintenant l'utilisateur de l'utilisation de fonctionnalités obsolètes par défaut,...
Perl 5.14 14 mai 2011 Unicode 6.0 est pris en charge, sémantique Unicode appliquée à toutes les chaînes de caractères, substitution non destructive (s///r), expressions régulières rentrantes, déréférence automatique par les préréglages (supprimés ultérieurement),...
Perl 5.16 20 mai 2012 Ajout de __SUB__ pour le sous-programme en cours d'exécution (currently-executing) et eval encoding-disambiguated.
Perl 5.18 18 mai 2013 Ajout d'opérations de jeu de caractères d'expression régulière et sous-routines lexicales (en tant que fonctionnalité expérimentale).
Perl 5.20 27 mai 2014 Ajout de signatures de sous-programmes et déréférencement Postfix (en tant que fonctionnalité expérimentale), syntaxe de tranche clef/valeur,...
Perl 5.22 1 juin 2015 Unicode 7.0 est maintenant supporté, les modules historiques CGI.pm et Module::Build ont été supprimés de la distribution principale, ajout de l'opérateur double diamant, opérateurs au niveau des bits désambiguïsés et variable aliasing (à titre expérimental),...
Perl 5.24 8 mai 2016 Unicode 8.0 est maintenant supporté, nouvelle limite de saut de ligne dans les expressions régulières, les classes de caractères entre crochets étendues fonctionnent dans les environnements locaux UTF-8, définitions plus explicites pour le décalage d'entier, paramètres de précision réordonnés pour printf et sprintf, plus de champs fournis à l'appel en arrière-plan sigaction,...
Perl 5.26 30 mai 2017 Pour des raisons de sécurité, le répertoire actuel (".") m'est plus inclus par défaut à la fin du chemin de recherche du module (@INC), les sous-routines lexicales ne sont plus expérimentales, indentes Here-documents, nouveaux modificateurs d'expression régulière et groupes de capture, Unicode 9.0 est maintenant supporté, Perl peut maintenant effectuer un classement par défaut dans les paramètres régionaux UTF-8 sur les plates-formes le prenant en charge,...
Perl 5.28 22 juin 2018 Ajout du support Unicode 10.0, supprime les tranches de hachage clef/valeur, ajout de synonymes alphabétiques d'assertions d'expressions régulières, les scripts Unicode mixtes sont maintenant détectables, montage sur place avec perl safer, initialisation des variables d'état agrégats, numéros d'inode pleine taille, la taille sprintf %j est maintenant disponible avec les compilateurs pre-C99, le drapeau Close-on-exec est fixé de manière automatiquement, les applications locales sont désormais thread-safe sur les systèmes qui les prennent en charge, ajout de la variable en lecture seulement ${^SAFE_LOCALES},...
... ... ...

Catégorie de fonctions

Enfin, on retrouve comme fonctions de base les suivantes :



PARTAGER CETTE PAGE SUR
Dernière mise à jour : Jeudi, le 17 janvier 2019