use XML::Parser;

# this should be the only fixed constant
$configuration_file = "/home/cadet/sacerdot/local/etc/helm/configuration.xml";

$parser = new XML::Parser(Handlers => {Start => \&handle_start,
                                       End   => \&handle_end,
                                       Char  => \&handle_char});


$parser->parsefile($configuration_file, ErrorContext => 3);


sub handle_start
{
   if ($_[1] eq "value-of") {
      $$varname .= ${$_[3]};
   } elsif ($_[1] ne "configuration") {
      $varname = $_[1];
   }
}

sub handle_end
{
   if ($_[1] ne "value-of" && $_[1] ne "configuration") {
      # Next line for debugging only:
      # print "OK: #$_[1]# := #$$varname#\n";
      $varname = undef;
   }
}

sub handle_char
{
   $$varname .= $_[1];
}
