Bonjour,

Petit dilemme d'écriture Perl. J'ai un programme très basique dont le but est de tester si un module est installé sur l'OS. Le nom du module est dans une variable. Voilà diverses écritures et messages d'erreurs de syntaxe ou de Perl::Critic. Du coup, je n'ai pas de solutions, merci de me donner vos avis.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
#!/usr/bin/perl
use strict;
use warnings;
 
my $module = 'XML::Twig3dd';
eval { use $module; } or die "$@ $module not installed";
Vérification de syntaxe : KO
syntax error at ....pl line 8, near "use $module"
Autre code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
#!/usr/bin/perl
use strict;
use warnings;
my $module = 'XML::Twig3dd';
eval "use $module"; warn "$@ $module not installed";
Vérification de syntaxe : OK
Fonctionnalité : OK
Vérification Perl::Critic : KO
Expression form of "eval" at line 5, column 1. See page 161 of PBP. (Severity: 5)
Autre code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
#!/usr/bin/perl
use strict;
use warnings;
my $module = 'XML::Twig';
eval { "use $module;"; }; warn "$@ $module not installed";
Vérification de syntaxe : KO
Useless use of string in void context at ...pl line 5.
Fonctionnalité : KO. Quelque soit le module, pour Perl il n'est pas installé.

Avec require, ce n'est guère mieux. Alors quelle est la bonne syntaxe pour ne pas avoir d'erreurs de syntaxe, ne pas avoir d'avertissement de Perl::Critic et que le script fonctionne ?