2010-11-22 2 views
0

Возможный дубликат:
How do I use a Perl package known only in runtime?Как использовать модуль с условием, если

Я хочу, чтобы загрузить модуль, только если он удовлетворяет условию.

Может кто-нибудь, пожалуйста, дайте мне знать, как его использовать. Я знаю его синтаксис. Но я получаю сообщение об ошибке при использовании модуля use::strict. Он выдает сообщение об ошибке, указывающее, что модуль должен быть определен. Программа работает нормально, если я не использую модуль 'use :: strict'.

Синтаксис:

use if CONDITION, MODULE => ARGUMENTS; 

Пожалуйста, дайте мне знать, как будет эта работа с использованием модуля use::strict.

+0

См. Также http://stackoverflow.com/questions/2292946/how-can-i-load-a-perl-module-at-runtime и http://stackoverflow.com/questions/3957498/how-can -i-conditionally-import-a-package-in-perl –

+2

Обратите внимание, что сообщения об ошибках и предупреждениях предназначены для * чтения *. Если вы их не понимаете, разместите их вместе с кодом, который сгенерировал эти машины. Вы можете представить себе трудность, связанную с попыткой угадать, что происходит на вашем ** компьютере, с которого мы сидим. Помогите людям помочь вам. –

+3

Возможно, он имел в виду 'Acme :: use :: strict :: with :: pride'? – mob

ответ

1

Если я правильно понимаю вашу проблему правильно, вы, вероятно, можно использовать Eval вместо этого, например, так:

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

Тонкая настройка правил/синтаксиса компилятора еще долго после того, как основная программа была сделана, компиляция кажется чрезвычайно мало полезной. – tchrist

5

Вы можете использовать require:

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

Он пытается «использовать if;» в сочетании с 'use strict ;, но он пишет' use :: strict', который предположительно приводит к некоторым интересным сообщениям. –

+0

Синан: О, я вижу. Никогда не использовал 'if' сам. –

3

Похоже, вы пытаетесь использовать if module from CPAN , Можете ли вы показать нам точный код, который вы пытаетесь запустить, и точное сообщение об ошибке, которое вы получаете. Без этого любые попытки помочь вам будут в значительной степени догадками.

Обновление: На самом деле я вижу, что if является основным модулем (и был в течение некоторого времени). Мы все еще нуждаемся в дополнительной информации от вас.

Обновлено обновление: Вот пример:

#!/usr/bin/perl 

BEGIN { 
    $use_strict = 0; 
} 

use if $use_strict, strict; 

Уставка $use_strict флаг определяет, будет ли включен строгий режим.

+4

исторические мелочи: IlyaZ работал над тем, чтобы «использовать ... если EXPR», но другие застрелили его, поэтому он написал if.pm вместо этого. – ysth

3

ОК, поэтому вы пытаетесь использовать if.

Однако, похоже, вы неправильно поняли, что значит использовать строгое.

Это означает, что вы должны иметь:

use strict; 

(и, конечно же, его дружок use warnings;) в начале вашего скрипта.

Отметьте, что use::strict не делает, что вы можете себе представить.

 Смежные вопросы

  • Нет связанных вопросов^_^