OVH Cloud OVH Cloud

Tester si un package est disponible

2 réponses
Avatar
Matthieu Moy
Bonjour,

J'ai un petit programme qui peut tourner soit en ligne de commande,
soit lancer une petite interface graphique en gtk2.

Le truc, c'est que j'aimerais que mon programme puisse tourner en
ligne de commande sur une machine ou il n'y a pas gtk2-perl
d'installé, et forcément, ça coince sur le "use Gtk2;" ...

Je me demandais si il y avait moyen de faire quelque chose comme

#if (gtk2 available)
use Gtk2;
#endif

Sinon, je ferais deux processus séparés.

Merci de vos réponses.

--
Matthieu

2 réponses

Avatar
Jean-Michel Hiver
Je me demandais si il y avait moyen de faire quelque chose comme

#if (gtk2 available)
use Gtk2;
#endif


eval "use Gtk2";
$@ and die "Cannot load Gtk2: $@";

Avatar
jl_morel
Dans l'article ,
invalid a dit...

J'ai un petit programme qui peut tourner soit en ligne de commande,
soit lancer une petite interface graphique en gtk2.

Le truc, c'est que j'aimerais que mon programme puisse tourner en
ligne de commande sur une machine ou il n'y a pas gtk2-perl
d'installé, et forcément, ça coince sur le "use Gtk2;" ...

Je me demandais si il y avait moyen de faire quelque chose comme

#if (gtk2 available)
use Gtk2;
#endif



Faites un eval "use Gtk2;" dans un bloc BEGIN
pour que le test ait lieu à la compilation


my $Gtk2_available;
BEGIN {
eval "use Gtk2;";
$Gtk2_available = $@ ? 0 : 1;
}

if ($Gtk2_available) {
# code pour Gtk2
}
else {
# code pour la console
}

HTH

--
J-L.M.