Le code PERL suivant .. .. fonctionne sous Windows, mais ne fonctionne pas sous toutes les autres plates-formes ("ne peut pas localiser win32.pm dans @inc"). Comment instruire Perl d'importer Win32 uniquement lors de l'exécution sous Windows et ignore l'instruction d'importation sous toute autre plate-forme? P> p>
4 Réponses :
en général, Utilisez le module code> ou
Liste des module code> sont évalués au moment de la compilation, peu importe où ils apparaissent dans le code. L'équivalent d'exécution est
mais Vous pouvez également nécessite un module; code> p>
Utiliser code> Appels
Importation code>,
nécessite code> ne le fait pas. Donc, si le module exporte vers l'espace de noms par défaut, vous devez également appeler p>
Import Module QW (Stuff_To_IMport) CODE>; P>
eval "Utilisez le module" code> - qui fonctionne bien si Perl peut trouver le chemin approprié à l'exécution. P>
N'utilisez pas d'appels de méthode indirecte, ils ne sont pas les meilleures pratiques par un long coup. Faire module-> importation (qw (truc)); code> à la place.
Ce code fonctionnera dans toutes les situations et effectue également la charge au moment de la compilée, car d'autres modules que vous construisent peut dépendre de celui-ci:
use if $^O eq "MSWin32", Module;
Bareword "module" non autorisé alors que "Strict Strict" en utilisation ... Code> i> - Il avait l'air si bon de loin ....
@JWW Vous êtes censé remplacer "module" par le nom du module réel que vous souhaitez charger. Et cet espace de noms doit être déclaré dans le fichier avec une instruction code> package code>.
Oh l'a eu, merci. Pourquoi n'avez-vous pas utilisé win32 code>? (Je ne suis pas un vétéran Perl chevronné, alors j'ai souvent besoin de chercher Perl de base).
En tant que raccourci pour la séquence:
use if $^O eq "MSWin32", "Win32"; # or ..."Win32", your-args;
Est-ce que cela répond à votre question? Comment puis-je utiliser un module dans Perl?