나는 내 소스 코드 저장소의 lib 디렉토리에 보관 된 모듈을 사용할 수 있기를 원하며, 필자가 작성한 스크립트를 사용하는 유일한 전제 조건은 표준을 갖기를 원한다. Perl 설치, 그러나 나는 이것을 성취하는 방법을 모르겠다. 내 스크립트에서FindBin으로 @INC를 조정 한 후에도 왜 내 Perl 스크립트에서 내 모듈을 찾지 못합니까?
, 나는
use FindBin qw($Bin);
use lib "$Bin/lib"; # store non standard modules here
use Term::ANSIColor;
use Win32::Console::ANSI;
print Term::ANSIColor::colored("this should be in color\n", "bold red");
을하고 난 ./lib에 모듈을 넣습니다. 그 모듈의 실제 위치를 확인했습니다 (이름을 변경하고 실패하게 만듭니다). 그러나 모듈이 임의의 lib 디렉토리에 있더라도 ppm 모듈을 인식해야합니다.
ppm으로 "설치"하지 않고 lib에서 찾거나 사용할 수있는 스크립트를 가져올 수 없습니다. 나는 이것에 대한 어떤 종류의 방법이 있어야한다고 생각한다.
비정규 요청 일 수 있지만 내 목표는 비정형 인 것으로 알고 있습니다. 개발자가 체크 아웃을하고 일부 추가 명령을 실행하거나 패키지 관리자를 사용하지 않고 즉시 일부 스크립트를 사용하기를 원합니다.
어떤 통찰력에도 감사드립니다.
편집 : 전체 예제가 업데이트되었습니다. 또한 ppm을 통해 제거하면 (참조 된 디렉토리에 pm을 남겨 둡니다) 구문이 변경 될 수도 있다는 것을 알게되었습니다. 그래서 아마 전체 경로를 제공하거나 jheddings 또는 BipedalShark 제안 (예를 들어, 설치되지 않은 경우 "require"를 사용하여 ".pm"을 추가하거나 BEGIN 블록을 사용해야합니다.)
이 경우, 그럼 내가 올바른 구문을 발견하지 않았습니다
편집 2 :. 아래의 의견을 바탕으로, 나는 결함이 가정을 가질 수 내 추론이가 실현 :. 내가 참조하는 경우 실제 코드 인 ".pm"을 직접 패키지 관리자를 사용하지 않고 사용할 수 있어야합니다. 어쩌면 그렇지 않을 수도 있고, 그렇지 않으면 어쩌면 다른 방식으로해야 할 수도 있습니다. ".pm"코드를 리팩터링해야 할 수도 있습니다.
EDIT 3 : 나는 약간의 오해를하고 있었다고 생각합니다. 내 IDE "Compilation failed in require"의 오류 메시지는 모듈을 포함하기 위해 사용하고 있던 줄과 "Win32 :: Console :: ANSI 모듈의로드 가능한 개체를 찾을 수 없습니다"라는 콘솔 오류 메시지를 강조 표시합니다.
모듈 자체를로드하는 데 문제가 있다고 읽었지만 모듈 자체가로드하려고 시도하는 것으로 인해 발생하는 것으로 보입니다. 필자가 ppm 설치를 사용하지 않았기 때문에 이것은 단지 문제라는 것에 흥미가 있습니다.
실제 모듈을 찾고 있습니다. 문제가되는 부분을 주석 처리하여 확인할 수있었습니다.
도움을 주셔서 감사합니다.하지만 시간을 좀 더 보내야 할 것입니다.
귀하의 질문은 이해되지 않는다. PPM은 설치 프로그램을 제외하고는 아무런 영향을 미치지 않습니다. "작동하지 않을 때"그것은 무엇을합니까? – hobbs
왜 패키지 관리자에 대해 이야기하고 있습니까? 스크립트가 모듈이 어떻게 도착했는지 아무 것도 신경 쓰지 않아야합니다. 진짜 질문은 게시 한 것 이외의 것이 뭡니까? –
lib /에있는 모듈은 무엇입니까? lib/look은 무엇입니까? –