使用Mason从模板(而不是Web)生成一些输出。
需要从 Mason 组件生成输出,其中输出行应以%
字符开头。
因为 Mason 组件中行首的%<space>
是作为 perl 命令执行的,所以目前我使用的是:
<% $perc %> the remaining content of the line.
$perc在%init
部分中定义为my $perc = '%';
以上有效,但对于许多行来说,这是一个糟糕的解决方案。
问题:是否有可能在某种程度上生成 Mason 输出,其中某些行在行首包含"%"字符?
基于对话是梅森邮件列表,唯一有效的解决方案是编写自定义过滤器。(不幸的是,"自然"双%%
或转义%
不起作用,可能永远不会添加到基本的 Mason 语法中。
以下梅森过滤器工作,
<%filter unesperc><% $yield->() =~ s/^\%/%/gmr %></%filter>
例如,从
% $.unesperc {{
%hello
% for my $i (1..3) {
% test <% $i %>
% }
%hello2
% }}
将产生所需的输出。
%hello
% test 1
% test 2
% test 3
%hello2