MyWord #### my $mod = MyModule->new(); $mod->initialise_stuff("settings"); #### $TPL->load_XMLkeywords([ $mod ], cwd()."/../conf/keywords.xml"); #### sub load_XMLkeywords { my $self = shift; my $modules = shift; my $filename = shift; warn "Loading XML Keywords\n" if (qw/DEBUG/); my $X = XML::Twig->new(); $X->parsefile($filename); my $root = $X->root(); my @words = $root->children("word"); warn "Element Count ".scalar @words ."\n" if (qw/DEBUG/); foreach my $word(@words) { # Include this word as a keyword. my $key = $word->text(); $key =~ s/\n//g; $self->add_keyword($key); warn "Keyword: ".$key."\n" if (qw/DEBUG/); # Now we need to evaluate the method or query. # and create a field set within our T_KEYWORDS reference. if ($word->att("query")) { # In this case this is a singular database query. my $qq = $word->att("query"); my $sth = $self->dbh()->prepare($qq); $sth->execute(); my $val = $sth->fetchrow(); $self->{T_KEYWORDS}{$key} = $val; warn $key." = $val\n" if (qw/DEBUG/); $X->flush(); } elsif ($word->att("method")) { my $invoke = $word->att("method"); # find a corresponding class. foreach my $class(@$modules) { my $type = ref $class; if ($invoke =~ /$type/) { warn "Found Type $type\n" if (qw/DEBUG/); $invoke =~ s/$type:://g; } my $val; my $statement = '$val = $class->$invoke'; eval $statement; $self->{T_KEYWORDS}{$key} = $val; warn $key." = $val\n" if (qw/DEBUG/); } $X->flush(); } } }