# Rental.pm package Rental; use Modern::Perl; use Moose; use Moose::Util::TypeConstraints; use MooseX::StrictConstructor; use Movie; subtype 'PositiveInt' => as 'Int', => where { $_ > 0 } => message { "$_ is no positive number" }; has 'movie' => ( is => 'ro', isa => 'Movie', required => 1, reader => 'getMovie', ); has 'daysRented' => ( is => 'ro', isa => 'PositiveInt', default => 1, reader => 'getDaysRented', ); sub getCharge { my $self = shift; return $self->getMovie->getCharge($self->getDaysRented); } sub getFrequentRenterPoints { my $self = shift; return $self->getMovie->getFrequentRenterPoints($self->getDaysRented); } no Moose; __PACKAGE__->meta->make_immutable; 1;