2013-07-03 1 views
1

Perl에 문제가 있습니다. 실행 중에이 오류가 발생합니다.Perl이 잘못된 실행 경로로 리디렉션됩니다.

Can't locate XML/LibXML/NodeList.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/lib64/perl5/XML/LibXML.pm line 25. 

그러나이 파일을 찾을 때 나는 locate 명령을 사용하여 찾았습니다. /usr/local/lib/perl5/site_perl/5.18.0/x86_64-linux/XML/LibXML/ 디렉토리.

다른 perl 패키지를 설치했고 모두 올바르게 설치되었습니다. 지정된 위치에 단일 파일을 넣으면 다른 파일에 대해 불평 할 것입니다. 따라서 수동으로 파일을 저장하는 것은 좋은 생각이 아닙니다.

그래서 올바른 디렉토리에서 파일을 실행할 수 있도록 경로를 어떻게 변경합니까?

편집

Can't locate loadable object for module XML::LibXML in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/lib64/perl5/XML/LibXML.pm line 154 
[Wed Jul 03 10:15:13 2013] [error] [client 192.73.242.136] BEGIN failed--compilation aborted at /usr/local/lib64/perl5/XML/LibXML.pm line 154. 
[Wed Jul 03 10:15:13 2013] [error] [client 192.73.242.136] Compilation failed in require at /var/www/cgi-bin/astpp/astpp-cdr-xml.cgi line 23. 
[Wed Jul 03 10:15:13 2013] [error] [client 192.73.242.136] BEGIN failed--compilation aborted at /var/www/cgi-bin/astpp/astpp-cdr-xml.cgi line 23. 
[Wed Jul 03 10:15:13 2013] [error] [client 192.73.242.136] Premature end of script headers: astpp-cdr-xml.cgi 
+0

가능한 복제본 [다른 디렉토리에있는 Perl 모듈은 어떻게 포함합니까?] (http://stackoverflow.com/questions/841785/how-do-i-include-perl-module-thats- in-a-different-directory) – m0skit0

답변

6

당신은 아마 발견 XML::LibXML의 인스턴스는 펄의 다른 설치에 속한다. 위치를 포함하도록 검색 경로를 확장하더라도 작동하지 않을 수 있습니다.

적절한 도구를 사용하여 라이브러리를 새로 설치해야합니다 (아마도 cpan).

+0

'cpan -fi XML :: LibXML :: Nodelist'로이 모듈을 올바르게 설치했는데이 오류가 발생했습니다. – juned

+0

'XML :: LibXML :: Nodelist' 패키지는'XML :: LibXML'의 일부입니다. 그냥'cpan XML :: LibXML'을 입력하십시오. – Borodin

+0

여전히 오류가 발생하지만 다른 점은 내 편집을 참조하십시오 – juned

0

나는 Borodin에 동의합니다. Perl 설치가 이미 시스템에 설치된 표준 Perl과 다를 수 있습니다. 당신이 입력하면 어떻게됩니까

:

$ which perl 

또는이 두 가지 명령

$ type perl 

당신을 보여 주어야가있는 펄 프로그램이 기본적으로 실행되고있다.

펄 프로그램의 첫 번째 줄은 어떤 펄 실행 파일입니까? (그것은 #! /usr/bin/perl과 같은 형태는 두 개의 서로 다른 위치에 있습니까? 당신이 당신의 펄 모듈이 설치 될 수있다 표준의 모든 위치를 나열해야하는 perl -V에 입력 할 때

은 어떻게됩니까? 것을

이 또한 가능하다 당신의 XML::LibXML 모듈의 설치가 나쁘다. 나는 당신이 볼 수있는 디렉토리 XML::LibXML가에 따라 달라 바이너리 프로그램에 대한 생각뿐만 아니라 usr/local/lib/perl5/site_perl/5.18.0/XML/LibXML/ 같은 곳 바이너리를 참조하는 Perl 버전이 있어야합니다.

시도는이 모듈을 다시 설치 CPAN과 함께 다음 comm을 실행하십시오. 및 :

$ perldoc -l XML::LibXML::Nodelist 

및 설치된 곳을 참조하십시오.

+0

'which perl '과'type perl'은 같은 출력을 주며'perl -V' 명령은 많은 세부 사항을 제공합니다. – juned

+0

@juned 둘 다 Perl이 실행되는 위치를 나열합니다. 때로는 하나의 작품, 때로는 다른 작품. 문제는 Perl 스크립트가 어디에 있는지에 대해 Perl이 어디에 위치하는지에 대해 말합니다. 예를 들어,'type perl'은'/ usr/bin/perl'을 말하고 스크립트의 맨 위에'#!/usr/local/bin/perl'에 있습니다. Perl 스크립트 상단의 줄이'perl '형식의 Perl 위치와 다른가요? –

+0

@juned 예'perl -V'는 많은 정보를 제공하지만, 가장 마지막 비트는 Perl 모듈의 기본 검색 경로 인'@ INC'에있는 것을 나열합니다. 이'perl -Mfeature = say -e '를 시도해보십시오. "\ n", @INC;'명령을 사용하여 모듈 디렉토리 목록을 얻으십시오. –

관련 문제