There will be a lot of work before I can finally get this ready for the CPAN, but this works (and it's pure Perl):
#!/usr/local/bin/perl use strict; use warnings; use lib './lib/'; use aliased 'AI::Logic::Parser'; use aliased 'AI::Logic::Term'; use aliased 'AI::Logic::Engine'; my $parser = Parser->new(thief_prog()); my $term = Term->new($parser); my $engine = Engine->new( $term, Parser->consult( thief_prog(), {}, ) ); print $engine->run; print $engine->more; sub thief_prog { return <<' END_PROG'; steals(PERP, STUFF) :- thief(PERP), valuable(STUFF), owns(VICTIM,STUFF), not(knows(PERP,VICTIM)). thief(badguy). valuable(gold). valuable(rubies). owns(merlyn,gold). owns(ovid,rubies). knows(badguy,merlyn). END_PROG }
My long-term plan is to make the Prolog part optional and simply allow writing normal Perl with an optional Prolog interface for those who want to play with the language.