#!/usr/bin/perl -w
use strict;
use lib '../lib';
use Continuity;
use Data::Dumper;
use base 'Continuity::RequestHolder';
# This is the A MODIFIED VERSION written by awwaiid.
# The original version was written by Merlyn,
# http://www.perlmonks.org/?node_id=200391
my $info = "dog";
Continuity->new(port => 8080)->loop;
sub main {
my $self = shift;
bless $self, __PACKAGE__;
{
$self->try($info);
redo if ($self->yes("play again?"));
}
$self->print("<pre>Bye! Here's my DB");
$self->print(Dumper($info));
}
sub try {
my $self = $_[0];
my $this = $_[1];
if (ref $this) {
return $self->try($this->{$self->yes($this->{Question}) ? 'Yes' : 'No' });
}
if ($self->yes("Is it a $this")) {
$self->print("I got it!\n");
return 1;
};
$self->print("no!? What was it then? ");
chomp(my $new = $self->stdin());
$self->print("And a question that distinguishes a $this from a $new would be? ");
chomp(my $question = $self->stdin());
my $yes = $self->yes("And for a $new, the answer would be...");
$_[1] = {
Question => $question,
Yes => $yes ? $new : $this,
No => $yes ? $this : $new,
};
return 0;
}
sub stdin {
my $self = shift;
$self->print(qq{
<form method=POST>
<input id=in name=in type=text>
<script>document.getElementById('in').focus();</script>
</form>
});
$self->next;
my $in = $self->param('in');
return $in;
}
sub yes {
my $self = shift;
$self->print("@_ (yes/no)?");
$self->stdin() =~ /^y/i;
}
1;