Perl 5.36.0中feature 'class'官方示例无法运行
问题:Perl 5.36.0 无法运行官方文档中的class示例脚本
我从Perl官方文档复制了一段示例脚本:
use v5.36; use feature 'class'; class My::Example 1.234 { field $x; ADJUST { $x = "Hello, world"; } method print_message { say $x; } } My::Example->new->print_message;
执行时出现如下错误:
Feature "class" is not supported by Perl 5.36.0 at /home/con/Scripts/class.pl line 4. BEGIN failed--compilation aborted at /home/con/Scripts/class.pl line 4. Command exited with non-zero status 255
完全按照手册内容复制脚本却无法运行,请问这是Bug还是操作有误?
解答
这不是Bug,是文档版本与当前Perl版本不匹配导致的:
- 你查看的是Perl的blead分支文档,blead是Perl的开发预览分支,包含尚未正式发布到稳定版的新特性。
class核心特性是在Perl 5.38版本才正式引入的,Perl 5.36.0并不支持这个内置feature。
解决办法
1. 升级Perl版本
将Perl升级到5.38或更高版本,即可直接运行官方文档中的示例代码。
2. 使用兼容模块(无需升级Perl)
如果暂时无法升级Perl,可以安装CPAN上的Object::Pad模块,它提供了和核心class特性高度一致的语法,支持Perl 5.36及更早版本:
首先安装模块:
cpanm Object::Pad
然后修改脚本为以下形式:
use v5.36; use Object::Pad; class My::Example :version(1.234) { field $x; ADJUST { $x = "Hello, world"; } method print_message { say $x; } } My::Example->new->print_message;
执行修改后的脚本即可正常输出Hello, world。
内容的提问来源于stack exchange,提问作者con
相关产品推荐
相关产品推荐

