2

天,

我正在尝试使用 HTML::Mason 1.35 作为独立的模板语言来生成电子邮件。考虑以下测试脚本:

#!/usr/bin/perl
使用严格;
使用警告;

使用 HTML::Mason::Compiler;
使用 HTML::Mason;
使用 Data::Dumper;

我的 $view_info = {
    名称 => '约翰·史密斯',
    出生日期 => '10-10-2010'
};

我的$输出;

我的 $mason_compiler = HTML::Mason::Compiler->new(
    allow_globals => [ qw( $view_info ) ]
);

我的 $mason_interpreter = HTML::Mason::Interp->new(
    编译器 => $mason_compiler,
    comp_root => '/tmp/',
    out_method => \$输出
);

$mason_interpreter->exec('/something.m');

打印自卸车{
    输出 => $输出
};

当我尝试运行它时,我收到以下错误:

以下参数在调用中传递给
HTML::Mason::Compiler::compile 但未在
验证选项:comp_class

堆:
  [/usr/share/perl5/HTML/Mason/Compiler.pm:191]
  [/usr/share/perl5/HTML/Mason/ComponentSource.pm:76]
  [/usr/share/perl5/HTML/Mason/Interp.pm:452]
  [/usr/share/perl5/HTML/Mason/Request.pm:239]
  [/usr/share/perl5/HTML/Mason/Request.pm:205]
  [/usr/share/perl5/Class/Container.pm:275]
  [/usr/share/perl5/Class/Container.pm:353]
  [/usr/share/perl5/HTML/Mason/Interp.pm:348]
  [/usr/share/perl5/HTML/Mason/Interp.pm:342]
  [./masontest.pl:26]

不使用编译器,只解释组件可以正常工作,但是添加编译器会出现此错误。任何线索我在这里做错了什么?

4

2 回答 2

3

另一种解决方案,但不是解释:HTML::Mason::Compiler::ToObject用作编译器而不是HTML::Mason::Compiler. 我现在不记得为什么,但这就是我的工作代码中的内容。

于 2011-09-14T03:45:16.777 回答
2

一个(可能的)解决方案:

#!/usr/bin/perl
使用严格;
使用警告;

使用 HTML::Mason::Compiler;
使用 HTML::Mason;
使用 Data::Dumper;

我的 $view_info = {
    名称 => '约翰·史密斯',
    出生日期 => '10-10-2010'
};

我的$输出;

我的 $mason_interpreter = HTML::Mason::Interp->new(
    allow_globals => [ qw( $view_info ) ],
    comp_root => '/tmp/',
    out_method => \$输出
);

$mason_interpreter->set_global('$view_info', $view_info);
$mason_interpreter->exec('/something.m');

打印自卸车{
    输出 => $输出
};
于 2011-09-14T04:01:34.967 回答