我尝试在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;
但是我每次使用它时都会得到syntax
/ String found where operator expected
错误.
因此我的问题是:我是否正确使用这两种功能?我一直认为我只需要$self
像我一样初始化一次,并且可以为脚本的其余部分指出我想要的一切.
croak
默认情况下未加载.你必须use Carp
在包装中才能使用它(见鲤鱼).
顺便说一下,方法调用会忽略原型.不要使用它们.也不要将它们用于功能.
您可以使用类似Class :: Declare :: Attributes的东西来保存一些输入:
sub new :class { ... }