在现代 Perl 中定义类

尽管可用,但在现代 Perl 中不建议从头开始定义类。使用辅助 OO 系统之一,提供更多功能和便利。这些系统包括:

驼鹿

package Foo;
use Moose;

has bar => (is => 'ro');                 # a read-only property
has baz => (is => 'rw', isa => 'Bool');  # a read-write boolean property

sub qux {
    my $self = shift;
    my $barIsBaz = $self->bar eq 'baz';  # property getter
    $self->baz($barIsBaz);               # property setter
}

Class::Accessor(Moose 语法)

package Foo;
use Class::Accessor 'antlers';

has bar => (is => 'ro');                 # a read-only property
has baz => (is => 'rw', isa => 'Bool');  # a read-write property (only 'is' supported, the type is ignored)

Class::Accessor(本机语法)

package Foo;
use base qw(Class::Accessor);

Foo->mk_accessors(qw(bar baz));  # some read-write properties
Foo->mk_accessors(qw(qux));      # a read-only property

类::微小

package Foo;
use Class::Tiny qw(bar baz);  # just props