生成Mason输出,其中输出行应以%字符开头

时间:2014-12-03 12:21:47

标签: perl mason

使用Mason从模板(而非网络)生成一些输出。

需要从Mason组件生成输出,其中输出行应以%字符开头。

因为Mason组件中行开头的%<space>是作为perl命令执行的,所以我现在使用:

<% $perc %> the remaining content of the line.

并且$ perc在%init部分中定义为my $perc = '%';

上述工作,但对于很多行来说,这是一个可怕的解决方案。

问题:是否有可能在某些行包含&#39;%&#39;该行开头的字符?

1 个答案:

答案 0 :(得分:2)

基于对话是Mason邮件列表,唯一可行的解​​决方案是编写自定义过滤器。 (遗憾的是,“自然”双%%或转义\%无效,可能永远不会添加到基本的Mason语法中。)

以下梅森过滤器有效,

<%filter unesperc><% $yield->() =~ s/^\\%/%/gmr %></%filter>

e.g。来自

% $.unesperc {{
\%hello
% for my $i (1..3) {
\% test <% $i %>
% }
\%hello2
% }}

将产生所需输出的输出。

%hello
% test 1
% test 2
% test 3
%hello2