Config.pm (707B)
1 package PS::Config; 2 3 use Config::Grammar; 4 5 sub new { 6 my $class = shift; 7 my $self = {}; 8 bless ($self, $class); 9 10 my $parser = Config::Grammar->new({ 11 _sections => [ "general", "http" ], 12 general => { 13 _vars => [ 14 "agent", 15 "email", 16 "smtp", 17 # XXX: add simple regex validation here 18 "addrs", 19 "db_dir", 20 "log_dir", 21 ], 22 }, 23 http => { 24 _vars => [ 25 "socket", 26 "uid", 27 "gid", 28 "chroot", 29 "htdocs", 30 ], 31 }, 32 }); 33 34 my $cfg_file = "/etc/pricesloth.cfg"; 35 if (-e "etc/pricesloth.cfg") { 36 $cfg_file = "etc/pricesloth.cfg"; 37 } 38 $self->{cfg} = $parser->parse($cfg_file) or die "error: $parser->{err}\n"; 39 40 return $self; 41 } 42 43 sub get_cfg { 44 return $self->{cfg}; 45 } 46 47 1;