2010-12-21 2 views
3

최근에 내가 궁금해 한 이 설치 될 스크립트와 함께 제공되는 CPAN의 모듈을 살펴 보았습니다. 공용 CPAN에 끝나야하는 패키지 에 스크립트를 포함하는 권장 방법은 무엇이며 패키지를 사내 CPAN 서버에 출시 할 때 다른 권장 사항이 있으면 어떻게해야합니까?CPAN (및 CorporatePAN) 용 perl 스크립트를 패키지하는 데 권장되는 방법은 무엇입니까?

스크립트는 다음과 같이 시작합니다

#!/usr/bin/perl 

eval 'exec /usr/bin/perl -S $0 ${1+"[email protected]"}' 
    if 0; # not running under some shell 

두 질문

내가 평가 후면 부분은 불필요 제대로 이해하고 있는가? 설치시 CPAN 클라이언트에 의해 포함되며 은 Windows에 설치할 때 매우 다를 수 있습니다.

추천되는 sh-bang 줄은 무엇입니까? 그 대신 위의

#!/usr/bin/env perl 

수 있을까요?

답변

3

배포판을 설치할 때 일부 특정 Perl에 대해 이 설치되어 있으며 #!을 명시 적으로 설정해야합니다. 해당 perl을 사용하십시오 ($Config{startperl}에 주어진대로). 내가 아는 한 모든 모듈 설치 관리자가이 작업을 수행합니다. (업데이트 : cjm에 의해 명시된 바와 같이, #!는 분산 형으로 perl이 실행되고 en이 아닌 경우에만 해당)

sh scriptname으로 스크립트가 호출 되더라도 자동으로 perl을 사용하기위한 평가 자료가 포함되어 있습니다. 그것은 무해합니다.

+0

실제로'eval '은 버전 8 유닉스까지'#!'[발명되지 않았 음] (http://en.wikipedia.org/wiki/Shebang_%28Unix%29#History)이기 때문에입니다. 이전 버전에서는 실행 가능한 텍스트 파일이 쉘 스크립트 여야한다고 가정했습니다. – cjm

6

그냥 모듈 : : 빌드 또는 MakeMaker이 스크립트를 설치할 때 (perl의 경로가 개발 시스템에있는 어떤 선택적으로 또는,.)

#!/usr/bin/perl 

, 그것은이 #!이 변경됩니다 사용 모듈을 설치하는 perl과 일치하는 줄을 찾으십시오. 또한 "eval exec"행을 추가합니다 (Windows에서는 제외). 대신에 .bat 파일이 생성됩니다. 합니다 (CPAN 클라이언트는이 함께 할 수 없다.)

를 그런 다음 설치가이 펄 스크립트입니다, 그리고 #! 라인을 수정하지 않습니다 실현되지 않습니다

#!/usr/bin/env perl 

를 사용하는 경우.