在 perl 脚本中使用 $self 创建实例时出错

Error while creating an instance by using $self in a perl script

我尝试在我的 perl 脚本中创建一个对象。因此我有一个构造函数

new(;@)
{
     my $class = shift;
     my $self = {};
     bless $self, $class;
     $self->_init(@_);
     return $self;
}

还有我的_init(;@)函数,初始化对象

my $self = shift;
if( @_ )
{
    my %extra = @_;
    @$self{keys %extra} = values %extra;
}
return;

我是不是用错了这两个功能?我用两条线开始每隔一个子

my $self = shift;
croak "instance method called for class" unless ref $self;

但每次我使用它时,我在 return 中只收到 syntax / String found where operator expected 错误。

因此我的问题是:我是否以正确的方式使用这两个功能?我一直认为我只需要初始化 $self 一次,就像我做的那样,并且可以为脚本的其余部分指向我想要的所有内容。

croak 默认不加载。您必须在包中 use Carp 才能使用它(请参阅 Carp)。

顺便说一句,方法调用会忽略原型。不要使用它们。 Don't use them for functions, either.

您可以使用 Class::Declare::Attributes 之类的东西来节省一些输入:

sub new :class {
    ...
}