是否有方法在命令行验证perl语法?我知道对于常规的perl模块,您可以只使用perl -c,但这会引发特定于mason的语法(如docstring等)的错误。
例如:
<%doc>
DOCUMENTATION SHOULD NOT GET PARSED
</%doc>
<%args>
$args
</%args>
<%perl>
my $var = $args->{var};
</%perl>是一个有效的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.发布于 2015-01-17 03:11:54
我看了一下梅森,我第一次看到的是梅森:应用程序/mason.pl
$ mason junk.mason
Invalid attribute line '$args' at ./junk.mason line 6很干净吧?但是这实际上是试图运行代码,所以下一步是查看内部,在仔细查看之后,我发现了梅森::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 );https://stackoverflow.com/questions/27971410
复制相似问题