G'day,
我正在尝试使用HTML::Mason 1.35作为一种独立的模板语言来生成电子邮件。考虑以下测试脚本:
#/usr/bin/perl严格使用;使用警告;使用HTML::Mason::编译器;使用HTML::Mason;使用数据::Dumper;我的$view_info={name=>"John Smith",dob=>'10-10-2010'};我的$output;my$mason_compiler=HTML::mason::编译器->新建(allow_globals=>[qw($view_info(]);my$mason_interpreter=HTML::mason::Interp->new(compiler=>$mason_compiler,comp_root=>'/tmp/',out_method=>\$output);$mason_interpreter->exec('/tsomething.m'(;打印转储程序{输出=>$output};
当我尝试运行它时,我得到以下错误:
在对的调用中传递了以下参数HTML::Mason::Compiler::compile,但未在验证选项:comp_class堆栈:[/usr/share/perl5/HTML/Mason/Compiler.pm:191][/usr/share/perl5/HTML/Moson/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][./masostest.pl:26]
不使用编译器,只解释组件可以很好地工作,但是添加编译器会导致此错误。知道我在这里做错了什么吗?
另一个解决方案,但不是解释:使用HTML::Mason::Compiler::ToObject
而不是HTML::Mason::Compiler
作为编译器。我现在不记得为什么了,但这就是我工作代码中的内容。
一种(可能的(解决方案:
#/usr/bin/perl严格使用;使用警告;使用HTML::Mason::编译器;使用HTML::Mason;使用数据::Dumper;我的$view_info={name=>"John Smith",dob=>'10-10-2010'};我的$output;my$mason_interpreter=HTML::mason::Interp->new(allow_globals=>[qw($view_info(],comp_root=>'/tmp/',out_method=>\$output);$mason_interpreter->set_global('$view_info',$view_info(;$mason_interpreter->exec('/tsomething.m'(;打印转储程序{输出=>$output};