Initiation au Perl


Cette page est toujours en cours de rédaction.

Instructions de base

Shebang

Dans tous les scripts il y a une ligne en haut du document qui indique le type d'interpréteur qui doit être chargé au lancement du programme. Voici concernant Perl :

#!/usr/bin/perl
use warnings;
use strict;

Entrées-sorties de base

  • Sortie d'une variable :
print @tab;
# Avec des espaces :
print "@tab";
  • Saisir d'une valeur :
my $saisie = <STDIN>;
# Supprimer le retour à la ligne :
print chomp($saisie);

Manipuler les variables

  • Déclarations :
my $var = "string";
my @tab = ("un", 2, $var);
  • Supprimer un élément :
shift(@tab);
  • Ajouter un élément :
push(@tab, "nouveau");
  • Supprimer le dernier élément :
pop(@tab);
  • Taille d'un tableau :
scalar(@tab);
  • Déclarer un tableau associatif :
my %hash = (
  "cle1" => "valeur",
  "cle2" => "valeur",
);
 
print $hash{"cle2"};

Structure de contrôle

  • Les itérateurs ⇒ For et Foreach
for (my $i = 0; $i < @tab; $i++) {
    print "@tab[$i]\n";
}
foreach my $e (keys(%hash) {
    print "$e\n";
    print "$hash{$e}\n";
}

Les fonctions

  • Les fonctions
sub ùa_fonction {
   print "$_[0] : $_[1]\n";
}
 
ma_fonction("p1","p2");

Approfondissement du langage

Accès aux fichiers

  • Lecture :
open (Fichier, "<", "fichier.txt");
# Pour enregistrer tout le contenu du fichier dans une variable :
my $fichier <Fichier>;
# Pour analyser ligne par ligne son contenu :
while(<Fichier>) {
   print "$_";
}

la fonction close() est facultative.

  • Ecriture :
open (Fichier, ">", "fichier.txt");
print Fichier "insertion";
  • Test unitaire :
# Si c'est un répertoire :
if ( -d "fichier.txt") {}
# Si le fichier existe :
if ( -e "fichier.txt") {}
# Si le fichier est utilisé régulièrement :
if ( -f "fichier.txt") {}

Expression régulière

On peut s'aider du site http://Regex101/ pour créer les patterns.

  • Renvoi vrai si le mot est inclu :
my $chaine = "ma chaine";
if ($chaine =~ /ma/) {
  print "la chaine contient ma";
}
  • \d = un chiffre
  • \w = un caractère alphanumérique
  • \s = caractère d'espacement
  • Récupérer une chaine sans ponctuation :
my $chaine = "Hellène a poussée Éléonore";
$chaine =~ s/(?!-)[[:punct::]]//g;
print $chaine;
Sortie> Hellne a pousse lonore

Les objets (modules)

Organison notre code en deux fichiers. L'un contenant la classe et l'autre le programme principal. Ainsi on obtient quelque chose comme suit :

nano Vehicule.pm
package Vehicule;
 
sub new {
    return "Nouveauté!";
}
1;
nano main.pl
#!/usr/bin/perl
use warngins;
use strict;
use Vehicule;
 
my $var = Vehicule->new();
print $var;

Puis en exécutant le programme on obtient :

./main.pl
Nouveauté!