my $factory = Config::Builder->new qw(
user => user
admin => admin
htmldir => %path $basedir html
userdir => %path $htmldir $user
admindir => %path $htmldir $admin
email => %join $username @ $domain
);
my $values = read_your_config_file(); # returns a hash of values
my $config = $factory->make_config($values);
print "user dir is ".$config->("userdir")."\n";
print "admin dir is ".$config->("userdir")."\n";
####
$values = {
basedir => "/base/dir"
}
/base/dir/html/user
/base/dir/html/admin
----
####
$values = {
basedir => "/base/dir",
user => "customuser",
}
/base/dir/html/customuser
/base/dir/html/admin
---
####
$values = {
basedir => "/base/dir",
htmldir => "/custom/html/dir",
}
/custom/html/dir/user
/custom/html/dir/admin
####
my $c = read_your_config_file(); # returns a hash of values
use File::Spec::Functions;
$c->{user} ||= "user";
$c->{admin} || = "admin";
$c->{htmldir} ||= catfile($c->{basedir}, $c->{html});
$c->{userdir} ||= catfile($c->{htmldir}, $c->{user});
$c->{admindir} ||= catfile($c->{htmldir}, $c->{admin});
$c->{email} ||= "$c->{username}\@$c->{domain}";