2010-11-22 15 views
0

Duplicate possible:
How do I use a Perl package known only in runtime?Comment utiliser un module avec une condition if

Je veux charger un module que si elle satisfait à une condition.

Quelqu'un peut-il s'il vous plaît laissez-moi savoir comment l'utiliser. Je connais la syntaxe de celui-ci. Mais j'obtiens une erreur car j'utilise le module use::strict. Il émet une erreur indiquant que le module doit être défini. Le programme fonctionne bien si je n'utilise pas le module 'use :: strict'.

Voici la syntaxe:

use if CONDITION, MODULE => ARGUMENTS; 

S'il vous plaît laissez-moi savoir comment cela fonctionnera à l'aide du module use::strict.

+0

Voir aussi http://stackoverflow.com/questions/2292946/how-can-i-load-a-perl-module-at-runtime et http://stackoverflow.com/questions/3957498/how-can -i-conditionnellement-import-a-package-in-perl –

+2

Notez également que les messages d'erreur et d'avertissement sont à * lire *. Si vous ne les comprenez pas, postez-les avec le code qui a généré ces machines. Vous pouvez imaginer la difficulté à essayer de deviner ce qui se passe sur ** votre ** ordinateur d'où nous sommes assis. Aidez les gens à vous aider. –

+3

Peut-être qu'il voulait dire 'Acme :: use :: strict :: with :: pride'? – mob

Répondre

1

Si je comprends bien votre problème, vous pouvez probablement utiliser à la place eval, comme ceci:

if (some test here) 
    eval "use WHATEVERMODULE"; 
+0

Modifier les règles/syntaxe du compilateur longtemps après que le programme principal ait été fait, la compilation semble remarquablement peu utile. – tchrist

5

Vous pouvez utiliser require:

if ($condition) { 
    require Conditional::Module; 
    Conditional::Module->import(qw{ methods to be imported }); 
} 
+1

Il essaye 'd'utiliser if;' en conjonction avec 'use strict;' mais il écrit 'use :: strict' ce qui aboutit vraisemblablement à des messages intéressants. –

+0

Sinan: Oh je vois. Jamais utilisé «si» moi-même. –

3

On dirait que vous essayez d'utiliser le if module from CPAN . Pouvez-vous nous montrer le code exact que vous essayez d'exécuter et le message d'erreur exact que vous obtenez. Sans cela, toute tentative de vous aider sera en grande partie conjecturale.

Mise à jour: En fait, je vois que if est un module de base (et a été pendant un certain temps). Nous avons toujours besoin de plus d'informations de votre part.

mise à jour Mise à jour: Voici un exemple:

#!/usr/bin/perl 

BEGIN { 
    $use_strict = 0; 
} 

use if $use_strict, strict; 

Le réglage du drapeau $use_strict détermine si le mode strict ou non est activée. OK, vous essayez donc d'utiliser if.

+4

histoire historique: IlyaZ a travaillé sur 'use ... if EXPR', mais d'autres l'ont abattu, donc il a écrit if.pm à la place. – ysth

3

Cependant, vous semblez avoir mal compris ce que cela signifie d'utiliser strict.

Cela signifie, vous devriez avoir:

use strict; 

(et, bien sûr, son copain use warnings;) au début de votre script.

Notez que use::strict ne fait pas ce que vous imaginez.