1 package GSM::SMS::Config;
\r
3 # ------------------------------------------------------------------------
\r
7 # ^[.+]$ := start block
\r
8 # ^.+=.+$ := var, value pair
\r
9 # $_preferences->{$blockname}->{$var}=$value
\r
10 # $blockname = ( 'default', <blocknames> }
\r
13 @ISA = ('Exporter');
\r
14 @EXPORT = qw( &read_config &get_config);
\r
18 my ($filename) = @_;
\r
21 # prepare default config
\r
23 $config->{'default'} = [];
\r
24 push(@{$config->{'default'}}, $hook);
\r
28 open F, $filename or return undef;
\r
30 chomp; # loose trailing newline
\r
31 s/#.*//; # loose comments
\r
32 s/^\s+//; # loose leading white
\r
33 s/\s+$//; # loose trailing white;
\r
34 next unless length; # did we loose everything?
\r
36 # recon block or var/value pair ...
\r
37 if ( /\[(.+?)\]/ ) {
\r
40 push( @{$config->{$1}}, $hook );
\r
42 my ($var, $value) = split(/\s*=\s*/, $_, 2);
\r
43 $hook->{$var} = $value;
\r
52 my ($config, $name) = @_;
\r
54 return ${$config->{$name}}[0];
\r
60 GSM::SMS::Config - Implements a simple .ini style config.
\r
64 Implements a simple configuration format. Used mainly for the transports config file.
\r
68 Johan Van den Brande johan@vandenbrande.com>
\r