尽管可用,但在现代Perl中不建议从头开始定义类。使用提供更多功能和便利的辅助OO系统之一。这些系统包括:
Moose -受Perl 6 OO设计启发
Class::Accessor -驼鹿的轻巧替代品
Class::Tiny -真正的最小类建造者
驼鹿
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 }
类别::存取器(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