首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl Mason语法验证

Perl Mason语法验证
EN

Stack Overflow用户
提问于 2015-01-15 19:26:03
回答 1查看 848关注 0票数 4

是否有方法在命令行验证perl语法?我知道对于常规的perl模块,您可以只使用perl -c,但这会引发特定于mason的语法(如docstring等)的错误。

例如:

代码语言:javascript
复制
<%doc>
DOCUMENTATION SHOULD NOT GET PARSED
</%doc>

<%args>
$args
</%args>

<%perl>
my $var = $args->{var};
</%perl>

是一个有效的perl文件,但是对它运行perl -c会返回:

代码语言:javascript
复制
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.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-17 03:11:54

我看了一下梅森,我第一次看到的是梅森:应用程序/mason.pl

代码语言:javascript
复制
$ mason junk.mason
Invalid attribute line '$args' at ./junk.mason line 6

很干净吧?但是这实际上是试图运行代码,所以下一步是查看内部,在仔细查看之后,我发现了梅森::Interp,它有负载(路径),它被记录为

返回与绝对组件路径对应的组件对象,如果不存在,则返回undef。如果组件由于语法错误而无法加载,则会出现错误。

因此,您可以调整Mason::App来加载而不是运行,或者制作您自己的简单版本,如下所示

代码语言:javascript
复制
#!/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 );
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27971410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档