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.