2014-04-13 3 views
1

Mojolicious의 새로운 기능. 내 PC (Ubuntu 12.04)에서 실행하려고 할 때 test1.pl과 test2.pm의 두 파일에 오류가 발생했습니다.간단한 mojolicious 프로그램을 실행하려고 할 때 오류가 발생했습니다.

$ morbo test1.pl 
Couldn't load application from file "test1.pl": Can't call method "render" on an undefined value at test2.pm line 11. 

아이디어가 있으십니까? 감사. 여기

######### test1.pl
use Mojolicious::Lite; 
no warnings; 
use test2; 

get '/' => test2::sendMainPage; 
######### test2.pm
package test2; 
use Mojolicious::Lite; 
use URI::Escape; 
use HTML::Entities; 
use Data::Dumper; 
use JSON; 
use Exporter 'import'; 

sub sendMainPage { 
    my $self = shift; 
    $self->render(text => q|<html><body> 
<h1>Welcome to test demo page</h1> 
</body></html>|); 
} 


1; 

답변

8

당신이 필요로하는 두 개의 파일이 있습니다

그렇지 않으면 실제로 매개 변수없이 하위를 호출하므로 오류가 발생합니다.

또한이 작업을하지 마십시오. no warnings;. 사용자가 작성한 각 스크립트 스크립트의 맨 위에 use strict;use warnings;을 포함하십시오. Mojolicious::Lite이 기본적으로 해당 pragma를 켜는 데에는 많은 이유가 있습니다.

Bareword "test2::sendMainPage" not allowed while "strict subs" in use at test1.pl line 5. 

그리고 마지막으로, 항상 당신의 패키지 이름을 활용 : 당신이 그 일을했다면

, 당신은 문제에 당신을 경고 한 것이 경고를받은 적이있다. test2 대신 Test2입니다. perlstyle

Perl은 integer 및 strict와 같은 "pragma"모듈의 비공식적 인 모듈 이름을 비공식적으로 예약합니다. 다른 모듈은 대문자로 시작하고 대소 문자 혼용을 사용해야하지만 원시 파일 시스템의 모듈 이름 표현의 한계로 인해 스파 스 바이트에 맞아야하는 파일로 밑줄이 없을 수 있습니다.

최종 작업 코드 :

test1.pl

use strict; 
use warnings; 

use Mojolicious::Lite; 

use Test2; 

get '/' => \&Test2::sendMainPage; 

app->start; 

__DATA__ 

Test2.pm

package Test2; 

use strict; 
use warnings; 

sub sendMainPage { 
    my $self = shift; 
    $self->render(text => q|<html><body> 
<h1>Welcome to test demo page</h1> 
</body></html>|); 
} 

1; 

__DATA__ 
+0

감사 @Miller! 훌륭하게 작동합니다. – packetie

관련 문제