You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 09:43:16