my $meetingFile="meeting.ini"; GetOptions ('m=s' => \$meetingFile, 'p=s' => \$participantsFile, 'h' => \$help, 'v' => \$verbose); my %rawMeeting = readMeetingData($meetingFile); ####################################### sub readMeetingData { { local $| = 1; print "Reading meeting data from $meetingFile... "; } my ($meetingFile) = @_; print $meetingFile; my $meeting = new Config::Abstract::Ini($meetingFile) || die("\$!, stopped"); my %meeting = $meeting->get_entry('meeting'); # We're expecting 1 section (see meeting.ini specs). If there's more, we # ignore it, as long as the one we really want is there. We just ignore it # very, very loudly. my %testmeeting = $meeting->get_all_settings; my $numsections = scalar keys %testmeeting; # How many keys (=sections) did we find? if ($numsections != 1) { warn("Meetings file contains more sections ($numkeys) than expected, warning"); } my @neededKeys = ('aantalhuisjes','aantalinvalidenhuisjes','personenperhuis'); foreach $key (@neededKeys) { if (exists $tmeeting{$key}) { print "Found key: $key.\n" if $verbose; } else { die "Couldn't find $key, stopped"; } } my $numkeys = scalar keys %meeting; if ($numkeys != 3) { warn("\nUnexpected number of keys ($numkeys) in $meetingFile, expected 3, warning"); } else { print " found 3 keys, done.\n"; } return %meeting; }