MooseX::Declare
MooseX::Declareくらい綺麗にかければPerlでOOするのが面倒だとは思わないだろうなぁ。
http://search.cpan.org/~flora/MooseX-Declare-0.03/lib/MooseX/Declare.pm
use MooseX::Declare; class BankAccount { has 'balance' => ( isa => 'Num', is => 'rw', default => 0 ); method deposit (Num $amount) { $self->balance( $self->balance + $amount ); } method withdraw (Num $amount) { my $current_balance = $self->balance(); ( $current_balance >= $amount ) || confess "Account overdrawn"; $self->balance( $current_balance - $amount ); } }