2010-11-22 3 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

, 당신은 아마과 같이, 대신 평가 후면 사용할 수 있습니다 : 당신이 if module from CPAN을 사용하려는처럼

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

메인 프로그램이 끝난 후 오랫동안 컴파일러의 규칙/구문을 조정하면 컴파일이 거의 유용하지 않게 보입니다. – tchrist

5

당신은 require가 사용할 수 . 우리가 실행하려고하는 정확한 코드와 당신이 얻고있는 정확한 오류 메시지를 보여줄 수 있습니까? 그것 없이는, 당신을 도울 시도는 대체로 추측 일 것입니다.

업데이트 : 실제로 나는 if이 핵심 모듈이라는 것을 알고 있습니다. 그래도 우리는 더 많은 정보가 필요합니다.

업데이트 업데이트 :

#!/usr/bin/perl 

BEGIN { 
    $use_strict = 0; 
} 

use if $use_strict, strict; 

$use_strict 플래그의 설정이 엄격 모드가 켜져 있는지 여부를 결정합니다 다음은 예입니다.

+1

그는'use strict '와 함께'if;'를 사용하려하고 있지만, 아마도'use :: strict'라고 쓰고있다. –

+0

시안 : 오, 알았어. 직접'if'를 사용하지 마십시오. –

3

보이는 :

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

역사적 퀴즈 : IlyaZ는 'EXPR이라면 사용하라.'하지만 다른 사람들은 그것을 쐈다. 그래서 if.pm 대신에 썼다. – ysth

3

그래, if을 사용하려고합니다.

그러나 엄격한 사용의 의미를 오해 한 것 같습니다.

그것은 당신이해야 의미 :

use strict; 

(그리고, 물론, 그 친구 use warnings;) 스크립트의 시작 부분에.

use::strict은 사용자가 상상할 수있는 것을 수행하지 않습니다.