Qiang has asked for the wisdom of the Perl Monks concerning the following question:
I am using Conf.pm to get my config values. it is tidious to copy the same Conf.pm for each of my app and the only different is the config file path. so i would like to creat e a base Conf.pm and abstract out the config file part from sub load_config {}(probably by subclassing BaseConf) . this will allow me to provide different config path for different app easily. but i am not sure how to go about it.
the codes are based on the krang Conf.pm https://svn.krangcms.com/trunk/krang/lib/Krang/Conf.pm
anyway, here is my code
right now i can use it likepackage BaseConf; use strict; use warnings; use Carp qw(croak); use Config::Tiny; my $Conf; sub _load_config { my $conf_file = "/path/to/my.conf"; croak "unable to find $conf_file" unless -e $conf_file and -r $con +f_file; $Conf = Config::Tiny->read( $conf_file ); croak "read config file '$conf_file' failed: $Config::Tiny::errstr +" unless $Conf; } BEGIN { _load_config() } sub get { croak "invalid method called $_[1]" if not exists $Conf->{_}->{ $_ +[1] }; return $Conf->{_}->{ $_[1] }; } sub import { my $pkg = shift; my $callpkg = caller(0); foreach my $name (@_) { no strict 'refs'; # needed for glob refs *{"$callpkg\::$name"} = sub () { $pkg->get( $name ) }; } } 1;
but i would like to have it subclassed.. maybe like this :use base BaseConf qw/name1 name2/; ...
ideas?package MyConf; use base BaseConf; sub provide_my_config_path_here {} package main; use MyConf qw/name1 name2/;
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: need some OO help
by friedo (Prior) on Mar 26, 2007 at 16:45 UTC | |
by Qiang (Friar) on Mar 26, 2007 at 19:59 UTC | |
by friedo (Prior) on Mar 26, 2007 at 20:50 UTC | |
by Qiang (Friar) on Mar 26, 2007 at 21:36 UTC |