Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 从超类访问数据_Perl_Plack - Fatal编程技术网

Perl 从超类访问数据

Perl 从超类访问数据,perl,plack,Perl,Plack,我有一个超级类叫做Response: 包响应; 严格使用; 使用警告; 使用HTML::模板; 子响应{ 我的($class$request)=@; 返回$request->new_响应($class->status,$class->headers,$class->body); } 子机构{ 我的$class=shift; 我的$template=HTML::template->new('filehandle'=>eval($class::DATA)); 返回$template->output(

我有一个超级类叫做Response:

包响应;
严格使用;
使用警告;
使用HTML::模板;
子响应{
我的($class$request)=@;
返回$request->new_响应($class->status,$class->headers,$class->body);
}
子机构{
我的$class=shift;
我的$template=HTML::template->new('filehandle'=>eval($class::DATA));
返回$template->output().$class;
}
子状态{
返回200;
}
子标题{
返回['Content Type'=>'text/html'];
}
1.
__资料__
默认内容
还有一个名为URIError的子类:

package错误;
严格使用;
使用警告;
使用响应;
我们的@ISA=qw(响应);
1.
__资料__
无效的URI
调用URIError->response时,第行

my$template=HTML::template->new('filehandle'=>eval($class::DATA));
InResponse类不从URIError类获取数据节内容


实现这一点的语法是什么?

如果您像这样更改
body
方法,代码将正常工作。不需要
eval
:只需禁用
strict'refs'
并取消对字符串的引用
“${class}::DATA”


@user1474829表达“谢谢”的首选方式是对你提出的任何问题接受最有帮助的答案(点击绿色复选标记)(这也会增加你的声誉),并对有帮助的答案进行投票(如果你有15+的声誉)。请阅读,祝你好运。对不起,我从来没有真正经历过所有的评分过程。你的答案现在被标记了!谢谢again@user1474829:谢谢;我很高兴能帮助你。(注意你上面的评论不是我写的,而是@jm666写的)这太糟糕了。数据只能读取一次(除非注意到初始文件位置并向后搜索)。为什么没有一个访问器呢
sub body {
   my $class = shift;

   my $data_fh = do {
      no strict 'refs';
      *{"${class}::DATA"};
   };

   my $template = HTML::Template->new( filehandle => $data_fh );

   $template->output . $class;
}