the*_*ors 4 validation syntax perl mason
有没有办法在命令行验证perl mason语法?我知道你可以使用的常规perl模块perl -c,但是这会引起像docstrings之类的特定于mason的语法的错误......
例如:
<%doc>
DOCUMENTATION SHOULD NOT GET PARSED
</%doc>
<%args>
$args
</%args>
<%perl>
my $var = $args->{var};
</%perl>
Run Code Online (Sandbox Code Playgroud)
是一个有效的perl mason文件,但是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.
Run Code Online (Sandbox Code Playgroud)
我看了一下Mason,我看到的第一件事就是 Mason :: App/mason.pl
$ mason junk.mason
Invalid attribute line '$args' at ./junk.mason line 6
Run Code Online (Sandbox Code Playgroud)
整洁吧?但这实际上是试图 运行代码,所以下一步是查看内部,稍微环顾四周后,我发现Mason :: Interp有负载(路径),记录为
返回与绝对组件路径对应的组件对象,如果不存在,则返回undef.如果由于语法错误导致组件无法加载,则会出错.
所以你可以调整Mason :: App来加载而不是运行或制作你自己的简单版本
#!/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 );
Run Code Online (Sandbox Code Playgroud)