2015-01-15 7 views
4

커맨드 라인에서 펄 메이슨 구문의 유효성을 검사하는 방법이 있습니까? 예를 들어펄 메이슨 구문 유효성 검사

... 난 그냥 perl -c 사용할 수있는 일반 펄 모듈에 대해 알고 있지만, 그 구문 문서화 문자열 등처럼 메이슨 고유의 오류가 발생합니다 :

<%doc> 
DOCUMENTATION SHOULD NOT GET PARSED 
</%doc> 

<%args> 
$args 
</%args> 

<%perl> 
my $var = $args->{var}; 
</%perl> 

가 유효한 펄 메이슨 파일입니다, 그러나 반대 perl -c을 실행하는 반환

Semicolon seems to be missing at path/to/file.mc line 1. 
syntax error at path/to/file.mc line 2, near "DOCUMENTATION S" 
path/to/file.mc had compilation errors. 
+3

처럼 자신의 간단한 버전을 대신 실행의로드하거나하게 적응할 수 . 'perl -c Module.pm'은 문제를 일으킬 수 있습니다. – ikegami

+0

그 말이 맞을 수도 있습니다. 필자는 펄을 처음 사용하기 때문에 이런 종류의 명령어가 필요 없다. 즉, 필자는 mason * .mc 파일에 대해서는 확실히 작동하지 않는다. – therealmitchconnors

+0

그것을 암시하는 것을 의미하지는 않습니다. 메이슨은 펄이 아니기 때문에 펄을 실행할 수 없다. – ikegami

답변

8

나는, 내가 보는 제일 먼저 Mason::App/mason.pl

0 메이슨에보고했다
$ mason junk.mason 
Invalid attribute line '$args' at ./junk.mason line 6 

깔끔한? 하지만 실제로 그렇게 다음 단계는 내부보고하고, 조금 둘러보고 후, 나는

절대 구성 요소에 해당하는 요소 오브젝트를 돌려줍니다

으로 설명되어 있습니다 load (path)을 가지고 Mason::Interp을 찾아 실행 코드로 시도 경로 또는 존재하지 않는 경우 undef. 구문 오류로 인해 구성 요소 이로드되지 않으면 오류가 발생합니다. ` ';

그래서 당신은 당신이`펄 -e'use 모듈을 사용해야 메이슨 :: 앱이 모듈은이

#!/usr/bin/perl -- 
use strict; use warnings; use Mason; 
my $interp = Mason->new(
    comp_root => '/path/to/comps', 
    data_dir => '/path/to/data', 
    ... 
); 
$interp->load(shift); 
+1

우수하고 상세한 답변! 높은 품질을 위해 현상금 (24 시간 동안 수여 할 수 없음) 추가. – therealmitchconnors

+0

자발적으로 현상금을 제공하기위한 Upvoting. –