OVH Cloud OVH Cloud

uses et multiplateformes

2 réponses
Avatar
lasconic
Bonjour à tous ...
J'ai ecrit un script perl qui devrait fonctionner sur Win et sur Linux.
Or en debut de fichiers je fais un use Win32::Perms (je me sers de ce
module uniquement lorsque l'os detecté est windows avec $^O). Donc
jusque là tout va bien sauf que vous l'aurez peut etre deviner lorsque
je fais perl my.pl sous linux ... ça plante sur le use (evidemment le
Win32::Perms n'existe pas pour linux)... D'où ma question ... y'a t-il
un moyen simple d'empecher ça ? (autre que commenter la ligne qd je suis
sous Linux ;-))
Merci pour votre aide.

Lasconic

2 réponses

Avatar
GERBIER Eric
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

lasconic wrote:
Bonjour à tous ...
J'ai ecrit un script perl qui devrait fonctionner sur Win et sur Linux.
Or en debut de fichiers je fais un use Win32::Perms (je me sers de ce
module uniquement lorsque l'os detecté est windows avec $^O). Donc
jusque là tout va bien sauf que vous l'aurez peut etre deviner lorsque
je fais perl my.pl sous linux ... ça plante sur le use (evidemment le
Win32::Perms n'existe pas pour linux)... D'où ma question ... y'a t-il
un moyen simple d'empecher ça ? (autre que commenter la ligne qd je suis
sous Linux ;-))
Merci pour votre aide.


il faut remplacer le use par un require, et tester le tout avec un eval :

eval { require Win32::Perms };
if ($@) {
# n'existe pas
}
else {
# existe
}




-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.7 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFAO0v2Nzh6q8tvpCoRAkQIAJ9OEj3A9FdBWEowBV5GSqS/8lfxSQCfQCxJ
kO7N0SEUlDNBXnxcN1BanHY =o+r5
-----END PGP SIGNATURE-----

Avatar
LB
lasconic wrote:
Bonjour à tous ...
J'ai ecrit un script perl qui devrait fonctionner sur Win et sur Linux.
Or en debut de fichiers je fais un use Win32::Perms (je me sers de ce
module uniquement lorsque l'os detecté est windows avec $^O). Donc
jusque là tout va bien sauf que vous l'aurez peut etre deviner lorsque
je fais perl my.pl sous linux ... ça plante sur le use (evidemment le
Win32::Perms n'existe pas pour linux)... D'où ma question ... y'a t-il
un moyen simple d'empecher ça ? (autre que commenter la ligne qd je suis
sous Linux ;-))
Merci pour votre aide.

Lasconic


Voir mon post sur use et require, pour faire rapide, un use suppose que
ton module Win32 est installé quelque soit les tests que tu fais.

Si tu veux t'en sortir, j'ai une solution en faisant ton use à la main,
c'est à dire :

BEGIN {
if ($^O =~ m/Win/) {
require Win32::Perms;
import Win32::Perms;
}
}