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

最佳答案

我看了一下梅森,第一眼看到的是Mason::App/mason.pl

$ mason junk.mason
Invalid attribute line '$args' at ./junk.mason line 6

整洁吧?但这实际上是在尝试运行代码,所以下一步是查看内部,稍微环顾四周后,我发现 Mason::Interp 具有 load (path) 记录为



所以你可以调整 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 );

关于Perl Mason 语法验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27971410/

10-09 05:34