有没有办法在命令行验证perl mason语法? 我知道对于常规的perl模块,你可以只使用perl -c
,但这会为特定于梅森的语法(如文档字符串等)抛出错误......
例如:
<%doc>
DOCUMENTATION SHOULD NOT GET PARSED
</%doc>
<%args>
$args
</%args>
<%perl>
my $var = $args->{var};
</%perl>
是一个有效的 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.
我看了一下梅森,我看到的第一件事是梅森::App/mason.pl
$ mason junk.mason
Invalid attribute line '$args' at ./junk.mason line 6
整洁吧?但这实际上尝试运行代码,所以下一步是查看内部,环顾四周后,我发现 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 );