Perl 5.36.0 摘要示例不适用于功能“类”

con*_*con 4 perl

我从 Perl 的文档中举了一个例子:

https://perldoc.perl.org/blead/perlclass

并尝试执行以下脚本:

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;
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

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
Run Code Online (Sandbox Code Playgroud)

我完全从手册中复制了脚本,但该脚本不起作用。

这是一个错误,还是我做错了什么?

tob*_*ink 5

尽管use v5.36;在该示例中使用了 ,但class直到 Perl v5.37.9 才引入该关键字。但那是一个不稳定的 Perl 版本。

预计(“预期”,我的意思是“几乎已成定局”)Perl v5.38 将成为第一个支持该class关键字的 Perl 稳定版本。这可能会在未来几周内发布。不过,该class关键字是实验性的,因此如果您想在没有警告的情况下使用它,则需要将其包含在文件顶部:

use v5.38;
use experimental 'class';
Run Code Online (Sandbox Code Playgroud)

同时,您应该研究Object::Pad,它是此功能的原型实现,并将在旧版本的 Perl 上运行。

还有一个名为Feature::Compat::Class 的模块,它将加载 Perl 的本机class支持或 Object::Pad,具体取决于哪个可用。