Perl Mason 语法验证



有没有办法在命令行验证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 );

相关内容

  • 没有找到相关文章

最新更新