2014-10-23 4 views
2

나는 중형 CLI 응용 프로그램을 작성했습니다. 일단 개발 서버에 복사 한 후에는 거기에서 실행될 경우 명령을 인식하거나 인식하지 못합니다. 내 로컬 컴퓨터에서 작동하지만 서버에서는 작동하지 않는 다음 예제로 코드를 최소화했습니다. 그 이유는 무엇입니까?MooseX :: App 앱이 다른 컴퓨터에서 어떤 명령을 알지 못하는 이유

perl my_app.pl yay 

예상 출력 : 개발 서버에서

yay 

작은 응용 프로그램이 명령으로 yay을지지 않습니다

package MyApp; 
use MooseX::App; 

1; 

package MyApp::Yay; 
use MooseX::App::Command; 

sub run {print "yay\n"} 

1; 

package main; 

MyApp->new_with_command->run; 

1; 
파일 my_app.pl에서 해당 저장

하고 싶은 전화 도움말에 명령을 나열하지 않습니다.

Unknown command 'yay' 
usage: 
    my_app.pl <command> [long options...] 
    my_app.pl help 
    my_app.pl <command> --help 

global options: 
    --help -h --usage -? Prints this usage information. [Flag] 

available commands: 
    help Prints this usage information 

관련된 소프트웨어는 다음과 같습니다 :

  • 로컬 컴퓨터
    • 펄 v5.14.4 (작업)
    • MooseX :: 앱 1.30
  • 출력은 다음과 같습니다
  • 개발 서버 (해당 서버에서 작동하지 않음)
    • 펄 5.10.0
    • MooseX :

    앱 1.30

는 불행하게도, 난 개발 서버에 다른 펄 버전을 설치할 수 있지만 나는 자체을있는 Perl 관련이 의심한다. 업데이트 : 실제로 펄 5.10.0은 MooseX::App을 깨뜨렸다.

실행시 프로그램이 yay 명령을 알고 있습니까? 왜 효과가 없을지 전혀 모르십니까?

+1

MooseX :: App 1.30을 사용하여 5.10.1 버전에서 작동합니다. 5.10.0은 일종의 버그 였고 여전히이 시점에서 사용하는 것은 매우 이례적입니다. – AKHolland

+0

로컬 컴퓨터에 5.10.0을 설치하고 시도하십시오 (perlbrew 참조). 당신은 펄 버전이 아니라 다른 모듈의 버전이라는 것을 알 수있을 것입니다. – ysth

+0

@AKHolland, 맞아 : perlbrew로 Perl 5.20.1을 설치했는데 성공했다. 답변을 게시하면 기꺼이 받아 들일 것입니다. –

답변

0

5.10.0은 상당히 버그가 많은 perl입니다. perlbrew를 사용하여 다른 버전을 사용해보십시오.