perl:introduction_generale_et_pratique
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
perl:introduction_generale_et_pratique [2009/03/15 00:36] – édition externe 127.0.0.1 | perl:introduction_generale_et_pratique [2013/03/12 23:39] (Version actuelle) – root | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Introduction ====== | ||
+ | |||
====== 1. Contexte ====== | ====== 1. Contexte ====== | ||
Ligne 43: | Ligne 45: | ||
$ file / | $ file / | ||
- | Vous êtes sous Windows: dommage, ce sera un peu plus compliqué et délicat. Il existe une distribution complète et de bonne qualité : [[http:// | + | Vous êtes sous Windows: dommage, ce sera un peu plus compliqué et délicat. Il existe une distribution complète et de bonne qualité : [[http:// |
===== Exécution ===== | ===== Exécution ===== | ||
Si vous avez un fichier // | Si vous avez un fichier // | ||
+ | |||
$ perl programme.pl | $ perl programme.pl | ||
Il est plus traditionnel de passer par le mécanisme standard d'Unix permettant d' | Il est plus traditionnel de passer par le mécanisme standard d'Unix permettant d' | ||
- | * le programme doit être exécutable : | + | |
+ | * le programme doit être exécutable : | ||
$ chmod +x programme.pl | $ chmod +x programme.pl | ||
- | * le programme doit commencer par le //shebang// et l' | + | |
# | # | ||
print "Hello world!\n"; | print "Hello world!\n"; | ||
- | On peut alors invoquer le programme ainsi : | + | On peut alors invoquer le programme ainsi : |
$ ./ | $ ./ | ||
- | ===== Pièges ===== | + | ===== Pièges ===== |
- | Avec Perl sous Windows, vous devrez faire attention à certains détails qui ne vont pas de soi : | + | Avec Perl sous Windows, vous devrez faire attention à certains détails qui ne vont pas de soi : |
- | * Invoquez vos scripts Perl en appelant explicitant l' | + | |
- | * Utilisez un éditeur de texte capable de respecter la convention de fin de ligne Unix (LF, et non la convention Windows qui est CR-LF) | + | |
- | * Utilisez le slash (**/**) au lieu de l' | + | |
- | ===== Documentation ===== | + | * Invoquez vos scripts Perl en appelant explicitant l' |
+ | * Utilisez un éditeur de texte capable de respecter la convention de fin de ligne Unix (LF, et non la convention Windows qui est CR-LF) | ||
+ | * Utilisez le slash (**/**) au lieu de l' | ||
- | La source principale pour un programmeur Perl est **CPAN** (Comprehensive Perl Archive Network), qui rassemble la documentation, | + | ===== Documentation ===== |
- | Dans l' | + | La source principale pour un programmeur Perl est **CPAN** (Comprehensive Perl Archive Network), qui rassemble la documentation, |
- | * **man perlfunc** : les fonctions de base de l'interpréteur | + | |
- | * **man perldata** | + | |
- | * **man perlre** : syntaxe des expressions régulières Perl | + | |
- | | + | Dans l' |
- | ===== Les variables ===== | + | * **man perlfunc** : les fonctions de base de l' |
+ | * **man perldata** : les données de Perl (listes, hashes, etc) et leur manipulation | ||
+ | * **man perlre** : syntaxe des expressions régulières Perl | ||
- | Perl utilise 3 types principaux de variables : | + | ====== 3. Le langage ====== |
- | * Les **scalaires**, | + | |
+ | ===== Les variables ===== | ||
+ | |||
+ | Perl utilise 3 types principaux de variables : | ||
+ | * Les **scalaires**, | ||
+ | |||
+ | <code perl> | ||
$pi = 3.1416; | $pi = 3.1416; | ||
| | ||
- | * Les **listes**, qui décrivent une suite ordonnée de scalaires. Le préfixe est le symbole **@** : | + | </ |
+ | |||
+ | * Les **listes**, qui décrivent une suite ordonnée de scalaires. Le préfixe est le symbole **@** : | ||
+ | <code perl> | ||
@menu = ( " | @menu = ( " | ||
print $menu[0]; | print $menu[0]; | ||
- | * Les **hashes** (tableaux associatifs), | + | </ |
+ | |||
+ | * Les **hashes** (tableaux associatifs), | ||
+ | |||
+ | <code perl> | ||
%menu = ( " | %menu = ( " | ||
print $menu{" | print $menu{" | ||
+ | </ | ||
Les points importants (et parfois suprenants) à noter : | Les points importants (et parfois suprenants) à noter : | ||
- | * les noms de variables sont sensibles à la casse | ||
- | * les variables $toto, @toto et %toto sont distinctes et peuvent coexister | ||
- | * le préfixe dépend de la valeur accédée (élément du tableau @tab: $tab[0]) | ||
- | * leur déclaration n'est pas strictement nécessaire | ||
- | Nous verrons qu'il existe d' | + | * les noms de variables |
+ | * les variables $toto, @toto et %toto sont distinctes et peuvent coexister | ||
+ | * le préfixe dépend de la valeur accédée (élément du tableau @tab: $tab[0]) | ||
+ | * leur déclaration n'est pas strictement nécessaire | ||
- | ===== Boucles, tests ===== | + | Nous verrons qu'il existe d' |
+ | ===== Boucles, tests ===== | ||
- | On retrouve une syntaxe similaire au C pour la boucle classique : | + | On retrouve une syntaxe similaire au C pour la boucle classique : |
+ | <code perl> | ||
for ($i = 0; $i < 5; $i++) { ... } | for ($i = 0; $i < 5; $i++) { ... } | ||
+ | </ | ||
- | Mais on peut aussi facilement parcourir une liste : | + | Mais on peut aussi facilement parcourir une liste : |
+ | <code perl> | ||
| | ||
+ | </ | ||
- | Et on a le droit de choisir l' | + | Et on a le droit de choisir l' |
+ | <code perl> | ||
print "au menu: $_\n" foreach (@menu); | print "au menu: $_\n" foreach (@menu); | ||
+ | </ | ||
- | De même pour les tests : | + | De même pour les tests : |
- | | + | <code perl> |
+ | | ||
print " | print " | ||
+ | </ | ||
===== Les fonctions ===== | ===== Les fonctions ===== | ||
Il existe de nombreuses variantes pour déclarer une fonction, la plus courante en Perl étant la plus simple : | Il existe de nombreuses variantes pour déclarer une fonction, la plus courante en Perl étant la plus simple : | ||
+ | <code perl> | ||
sub somme_entiers { | sub somme_entiers { | ||
return $_[0] + $_[1]; | return $_[0] + $_[1]; | ||
} | } | ||
print somme_entiers(4, | print somme_entiers(4, | ||
+ | </ | ||
Une fonction n'a pas nécessairement de prototype, et les arguments sont passés à la fonction via la liste **@_**. Chaque argument est passé par référence et peut donc être modifié par la fonction. Le type de retour est libre, les fonctions en Perl sont polymorphes (on peut renvoyer un entier, une chaîne ou une liste dans une même fonction). | Une fonction n'a pas nécessairement de prototype, et les arguments sont passés à la fonction via la liste **@_**. Chaque argument est passé par référence et peut donc être modifié par la fonction. Le type de retour est libre, les fonctions en Perl sont polymorphes (on peut renvoyer un entier, une chaîne ou une liste dans une même fonction). | ||
- | |||
===== Les expressions régulières ===== | ===== Les expressions régulières ===== | ||
Elles sont partie intégrante de Perl et en fait la particularité la plus notable du langage. Une expression regulière est un mécanisme de recherche et d' | Elles sont partie intégrante de Perl et en fait la particularité la plus notable du langage. Une expression regulière est un mécanisme de recherche et d' | ||
+ | <code perl> | ||
print "On a un probleme" | print "On a un probleme" | ||
+ | </ | ||
On peut également reconnaître un format de chaîne et en extraire certains éléments : | On peut également reconnaître un format de chaîne et en extraire certains éléments : | ||
+ | <code perl> | ||
print somme_entiers($1, | print somme_entiers($1, | ||
+ | </ | ||
===== Modules ===== | ===== Modules ===== | ||
perl/introduction_generale_et_pratique.1237077412.txt.gz · Dernière modification : 2009/03/15 00:38 (modification externe)