Un cours pour débuter en Perl


previous up contents next

Sous-sections

9. Quelques trucs utiles

9.1 Exécuter des commandes

Une commande placée entre accents graves est soumise par Perl à l'interpréteur de commande du système, le résultat peut facilement être récupéré dans une variable :

  

@who = `\usr\bin\who`;
foreach (@who) {
   @User=split(/\s+/);
   printf ("User : %s \n", $User[0]);
}
  

L'exemple ci-dessus exécute la commande Unix who et affiche le nom des usagers (le premier champ des lignes retournées par who). C'est la sortie STDOUT qui est redirigée dans la variable spécifiée. Pour rediriger également les erreurs éventuelles, on pourrait écrire (sous Unix) :

  

$rm = `/bin/rm fichier 2>&1`;
if ($rm) { printf ("Erreur ---> %s \n", $rm);}
  

9.2 La fonction die

La fonction die arrête l'exécution d'un programme en affichant une liste passée en argument.

  

die ("c'est fini !\n");
  

On l'utilise généralement avec l'instruction de contrôle $\vert\vert$ pour terminer l'exécution d'un programme si l'instruction précédente se passe mal ( ouvertures de fichiers, ...) ou si un problème survient dans la logique de déroulement :
  

($chaine) || die ("La chaîne à traiter est vide \n");
  

En indiquant $! dans les paramètres passés à la fonction die, on affiche le code retour des fonctions systèmes :

  

open (FIC,"MonFichier") || die ("Pb ouverture : $! \n");
  

9.3 Évaluation à la volée

Perl permet d'évaluer à l'exécution des variables contenant du code. Cette fonctionnalité permet de construire dynamiquement des programmes ou morceaux de programmes. On utilise pour celà l'instruction eval qui va passer à Perl une chaîne à évaluer :

  

$var = '$som = $val1 + $val2';
eval $var;   # <==> à l'exécution, le contenu de $var est
                    passé à Perl qui exécutera son contenu
  

Il convient d'être prudent en utilisant eval, ne pas demander à l'utilisateur de rentrer une chaîne de caractères et la faire ensuite évaluer ainsi, il pourrait par exemple avoir accès à l'interpréteur de commandes et saisir `/bin/rm * ` ...

Perl traite les instructions trouvées dans une variable passée à eval comme un bloc (ie. comme si elles étaient délimitées par {} ) pouvant contenir des variables locales (cf. section 10).

L'instruction eval est également utilisée pour traiter les exceptions d'exécution d'un programme Perl, dans ce cas le contenu de la variable à évaluer doit explicitement être écrit comme un bloc complet (avec les accolades de début et de fin).

9.4 Les arguments de la ligne de commande

Les arguments de la ligne de commande sont accessibles par l'intermédiaire du tableau @ARGV qui contient un élément par arguments passés au programme. Contrairement au langage C, le premier élément du tableau @ARGV ne contient pas le nom de la commande, $ARGV[0] contient le premier argument passé à la commande.

  

foreach (@ARGV) {
    printf ("Arg = %s \n",$_);
}
  


previous up contents next

FD