I see a few strange things, but it could be because I don't completely understand what kind of objects these are supposed to be. Are they just an OOP wrapper API to these config files, or do they have other purposes? It seems like you're trying to have accessors defined on a per-object
basis (you (re)generate the accessors every time the new
method is called). But you create these accessors on a per-class
basis, and all of your objects are of the same class. Do you only ever instantiate one of these OurApp
objects per execution of your app?
The way I understand it, I could write the following:
my $obj1 = OurApp->new(conf_file => 'conf1');
my $obj2 = OurApp->new(conf_file => 'conf2');
# can use both foo and bar accessors on BOTH objects
print $obj1->foo, $obj1->bar;
print $obj2->foo, $obj2->bar;
Wouldn't you want $obj1->bar
to give an error like Can't locate object method "bar" via package "OurApp"
? It won't happen if the OurApp
namespace has been given both methods. Of course, if you don't plan on having multiple OurApp
objects around this isn't a problem.