package siteconf; use strict; use warnings; use FindBin; my $configuration = "$FindBin::Bin/../site.conf"; if (!open(FH, '<', $configuration)) { die "Could not open configuration file: $configuration\n"; } my %site_conf; sub read { my $site; while (my $line = ) { chomp $line; next if $line =~ /^#/; next if $line !~ /\S/; if ($line =~ /^\[([A-Za-z0-9_-]+)\]/) { $site = $1; $site_conf{$site} = {}; } elsif ($line =~ /^([A-Za-z0-9_-]+)\s+(.+)/) { $site_conf{$site}->{$1} = $2; } elsif ($line =~ /^([A-Za-z0-9_-]+)%\s+([A-Za-z0-9_-]+)\s+(.+)/) { if (ref($site_conf{$site}->{$1}) ne 'HASH') { $site_conf{$site}->{$1} = {}; } $site_conf{$site}->{$1}->{$2} = $3; } else { die "invalid line in site_conf: $line\n"; } } close(FH); return %site_conf; } 1; __END__ # vim: set tabstop=4 shiftwidth=4 expandtab smarttab: