Learn in 10 minutes

Learn in 10 minutes

Apprendre Perl en 10 minutes

Programming Language

Perl est un langage de programmation de haut niveau puissant, connu pour ses capacités de traitement de texte et sa flexibilité. Développé à l’origine pour les tâches d’administration système, Perl a évolué pour devenir un langage polyvalent utilisé pour le développement web, la programmation réseau et bien plus encore. Ce tutoriel couvre les concepts fondamentaux de Perl pour vous aider à apprendre rapidement le langage.

1. Écrire votre premier programme Perl

Commençons par un programme simple. Créez un fichier nommé hello.pl et saisissez le code suivant :

#!/usr/bin/perl
print "Hello, World!\n";

Enregistrez le fichier et exécutez la commande suivante dans le terminal :

perl hello.pl

La sortie sera :

Hello, World!

Ce programme simple démontre la fonctionnalité de sortie de base de Perl. La fonction print est utilisée pour afficher des informations textuelles dans la console.

2. Syntaxe de base

La syntaxe de Perl est flexible et expressive, avec plusieurs caractéristiques distinctives.

# Ceci est un commentaire
print "Hello, World!\n";

Règles de syntaxe de base en Perl :

  • Commentaires : Les commentaires d’une seule ligne commencent par #
  • Instructions : Se terminent par un point-virgule ;
  • Ligne Shebang : #!/usr/bin/perl en haut des fichiers de script
  • Variables : Utilisent des caractères spéciaux pour indiquer les types de variables ($, @, %)
  • Guillemets de chaîne : Peuvent utiliser des guillemets simples ' ou des guillemets doubles "

3. Variables et types de données

En Perl, les variables sont typées dynamiquement et utilisent des caractères spéciaux pour indiquer leur type.

Variables scalaires (valeurs uniques) :

$name = "Alice";
$age = 25;
$temperature = 36.5;
$is_active = 1;  # 1 pour vrai, chaîne vide pour faux

Variables de tableau (listes ordonnées) :

@fruits = ("apple", "banana", "cherry");
@numbers = (1, 2, 3, 4, 5);

Variables de hachage (paires clé-valeur) :

%person = (
    "name" => "John",
    "age" => 30,
    "city" => "New York"
);

3.1 Variables scalaires

Les scalaires contiennent des valeurs uniques comme des chaînes, des nombres ou des références.

# Opérations sur les chaînes
$text = "Perl Programming";
print length($text);        # Longueur de la chaîne
print uc($text);            # Convertir en majuscules
print lc($text);            # Convertir en minuscules
print substr($text, 0, 4);  # Extraire une sous-chaîne

# Opérations numériques
$x = 10;
$y = 3;
print $x + $y;    # 13
print $x - $y;    # 7
print $x * $y;    # 30
print $x / $y;    # 3.333...
print $x % $y;    # 1 (modulo)

3.2 Variables de tableau

Les tableaux sont des collections ordonnées qui peuvent contenir plusieurs valeurs.

@colors = ("red", "green", "blue");

# Accéder aux éléments du tableau
print $colors[0];     # "red" (utiliser $ pour un seul élément)
print $colors[1];     # "green"
print $colors[-1];    # "blue" (dernier élément)

# Opérations sur les tableaux
push(@colors, "yellow");     # Ajouter à la fin
pop(@colors);                # Supprimer de la fin
shift(@colors);              # Supprimer du début
unshift(@colors, "purple");  # Ajouter au début

# Fonctions de tableau
print scalar(@colors);       # Nombre d'éléments
print $#colors;              # Dernier index

3.3 Variables de hachage

Les hachages sont des collections de paires clé-valeur.

%student = (
    name => "Alice",
    age => 20,
    major => "Computer Science"
);

# Accéder aux éléments du hachage
print $student{"name"};     # "Alice"
print $student{age};        # 20

# Opérations sur les hachages
$student{"gpa"} = 3.8;     # Ajouter une nouvelle paire clé-valeur
delete $student{"age"};    # Supprimer une paire clé-valeur

# Fonctions de hachage
@keys = keys %student;      # Obtenir toutes les clés
@values = values %student;  # Obtenir toutes les valeurs

4. Flux de contrôle

Perl fournit plusieurs instructions de flux de contrôle pour gérer l’exécution du programme.

4.1 Instructions if

L’instruction if évalue une condition et exécute son bloc si la condition est vraie.

$age = 20;
if ($age >= 18) {
    print "Adult\n";
} elsif ($age >= 13) {
    print "Teen\n";
} else {
    print "Child\n";
}

# if sur une seule ligne
print "Adult\n" if $age >= 18;

4.2 Instructions unless

unless est l’opposé de if - s’exécute lorsque la condition est fausse.

$age = 15;
unless ($age >= 18) {
    print "Not an adult\n";
}

# unless sur une seule ligne
print "Not an adult\n" unless $age >= 18;

4.3 Boucles

Perl prend en charge diverses constructions de boucles.

Boucle while :

$count = 0;
while ($count < 5) {
    print "Count: $count\n";
    $count++;
}

Boucle for :

for ($i = 0; $i < 5; $i++) {
    print "i = $i\n";
}

Boucle foreach :

@fruits = ("apple", "banana", "cherry");
foreach $fruit (@fruits) {
    print "Fruit: $fruit\n";
}

# Utilisation de la variable par défaut $_
foreach (@fruits) {
    print "Fruit: $_\n";
}

last et next :

foreach (1..10) {
    last if $_ == 5;     # Sortir de la boucle
    next if $_ % 2 == 0; # Ignorer les nombres pairs
    print "$_\n";        # Sortie : 1, 3
}

5. Sous-routines

Les sous-routines en Perl sont définies à l’aide du mot-clé sub.

Définition de sous-routine de base :

sub greet {
    my $name = shift;
    return "Hello, $name!";
}

# Appeler la sous-routine
$message = greet("John");
print $message;

Utilisation des paramètres :

sub add_numbers {
    my ($a, $b) = @_;
    return $a + $b;
}

$result = add_numbers(5, 3);
print "Sum: $result\n";

Paramètres par défaut :

sub greet {
    my ($name, $greeting) = @_;
    $greeting = "Hello" unless defined $greeting;
    return "$greeting, $name!";
}

print greet("Alice");          # "Hello, Alice!"
print greet("Bob", "Hi");      # "Hi, Bob!"

6. Expressions régulières

Perl est célèbre pour ses puissantes capacités d’expressions régulières.

Correspondance de motif de base :

$text = "Hello, World!";

if ($text =~ /Hello/) {
    print "Found 'Hello'\n";
}

# Correspondance insensible à la casse
if ($text =~ /world/i) {
    print "Found 'world' (case-insensitive)\n";
}

Substitution :

$text = "I like cats and cats are cute";
$text =~ s/cats/dogs/g;  # Remplacer toutes les occurrences
print "$text\n";         # "I like dogs and dogs are cute"

Extraction des correspondances :

$email = "[email protected]";
if ($email =~ /(\w+)@(\w+\.\w+)/) {
    print "Username: $1\n";      # "user"
    print "Domain: $2\n";        # "example.com"
}

7. Opérations sur les fichiers

Perl fournit des méthodes simples pour lire et écrire des fichiers.

Lecture de fichiers :

# Lire un fichier entier
open(my $fh, '<', 'example.txt') or die "Cannot open file: $!";
my $content = do { local $/; <$fh> };
close($fh);
print $content;

# Lire ligne par ligne
open(my $fh, '<', 'example.txt') or die "Cannot open file: $!";
while (my $line = <$fh>) {
    print $line;
}
close($fh);

Écriture de fichiers :

# Écrire dans un fichier
open(my $fh, '>', 'output.txt') or die "Cannot open file: $!";
print $fh "Hello, Perl!\n";
close($fh);

# Ajouter à un fichier
open(my $fh, '>>', 'output.txt') or die "Cannot open file: $!";
print $fh "Appending new content.\n";
close($fh);

8. Fonctions intégrées

Perl est livré avec de nombreuses fonctions intégrées utiles.

Fonctions de chaîne :

$text = "  Perl Programming  ";
print length($text);        # Longueur de la chaîne
print uc($text);            # Convertir en majuscules
print lc($text);            # Convertir en minuscules
print substr($text, 0, 4);  # Extraire une sous-chaîne
print index($text, "Prog"); # Trouver la position d'une sous-chaîne

Fonctions de tableau :

@numbers = (3, 1, 4, 1, 5, 9, 2);
print join(", ", sort @numbers);      # "1, 1, 2, 3, 4, 5, 9"
print join(", ", reverse @numbers);   # "2, 9, 5, 1, 4, 1, 3"

# Filtrer un tableau
@filtered = grep { $_ > 3 } @numbers;
print join(", ", @filtered);          # "4, 5, 9"

# Transformer un tableau
@doubled = map { $_ * 2 } @numbers;
print join(", ", @doubled);           # "6, 2, 8, 2, 10, 18, 4"

Fonctions de hachage :

%person = (name => "Alice", age => 25, city => "New York");
@keys = keys %person;      # Obtenir toutes les clés
@values = values %person;  # Obtenir toutes les valeurs

# Vérifier si une clé existe
if (exists $person{age}) {
    print "Age exists\n";
}

9. Modules Perl

Perl dispose d’un riche écosystème de modules disponibles via CPAN.

Utilisation des modules de base :

use strict;
use warnings;
use Data::Dumper;

%data = (name => "Bob", age => 30);
print Dumper(\%data);  # Affichage formaté de la structure de données

Installation et utilisation des modules CPAN :

# Installer un module depuis CPAN
cpan install JSON
use JSON;

# Analyser du JSON
$json_string = '{"name": "Alice", "age": 25}';
$person = decode_json($json_string);
print $person->{name};  # "Alice"

# Générer du JSON
$person_hash = { name => "Bob", age => 30 };
$json_output = encode_json($person_hash);
print $json_output;  # {"name":"Bob","age":30}

10. Guide de style Perl

Perl a des conventions communautaires qui favorisent un code propre et lisible.

Indentation : Utilisez 4 espaces pour l’indentation.

Nommage des variables :

  • Utilisez des noms descriptifs
  • Suivez la convention snake_case
  • Utilisez des noms de variables significatifs

Organisation du code :

  • Utilisez use strict; et use warnings; en haut des scripts
  • Déclarez les variables avec my pour limiter la portée
  • Utilisez des noms de sous-routines significatifs

Documentation :

  • Utilisez POD (Plain Old Documentation) pour documenter le code
  • Incluez des commentaires pour la logique complexe

La flexibilité de Perl et ses puissantes capacités de traitement de texte en font un excellent choix pour l’administration système, le développement web et les tâches de traitement de données. Son riche écosystème de modules et le solide soutien de sa communauté continuent de le rendre pertinent dans les environnements de programmation modernes.