my $obj = Monks::->new;
####
my $obj = Monks::->new(data => $ARGV[0]);
####
package Monks::DataWeird;
use strict;
use warnings;
our $VERSION = '20160808.00';
sub get_furries { [qw{Rabbits Alligators Minks}] }
sub get_texture_for { +{qw{Rabbits soft Minks supersoft Cats scales}} }
1;
####
package Monks;
use strict;
use warnings;
our $VERSION = '0.01';
sub new {
my ($class, @args) = @_;
my $self = bless { @args } => $class;
$self->_init;
return $self;
}
sub _init {
my ($self) = @_;
eval "require $_[0]->{data}";
}
sub _get_data { $_[0]->{data} }
sub is_furry {
my ($self, $furry) = @_;
grep { /$furry/ } @{$self->_get_data->get_furries};
}
sub find_fur_texture {
my ($self, $fur) = @_;
$self->_get_data->get_texture_for->{$fur};
}
1;
####
$ pm_1169455_oo_class_example.pl Monks::Data
Cats: furry? Yes
Alligators: furry? No
Rabbits: furry? Yes
Fur texture for Cats: coarse
####
$ pm_1169455_oo_class_example.pl Monks::DataWeird
Cats: furry? No
Alligators: furry? Yes
Rabbits: furry? Yes
Fur texture for Cats: scales
####
$ pm_1169455_oo_class_example.pl XMonks::Data
Can't locate object method "get_furries" via package "XMonks::Data" at Monks.pm line 24.