Here are some methods for you.
sub birthday{
my $self = shift;
$self->{age}++;
if ($self->{age} == 12){
$self->{old_happiness} = $self->{happiness};
$self->{happiness} = -1;
if (UNIVERSAL::isa($self,'GEEK')){
$self->{happiness} -= 3;
}
}
if ($self->{age} == 19){
$self->{happiness} = $self->{old_happiness};
if (UNIVERSAL::isa($self,'GEEK')){
$self->{happiness} += 3;
}
}
if ($self->{age} > 70){
$self->yell(@{$kids{damned}});
$self->complain(@{$politicians{damned}});
}
}
sub experiment{
my $self = shift;
my $idea = shift;
my $result;
unless ($self->{tried}->{$idea}){
$result = $idea->($self);
print "Cool, I didn't die\n";
$self->{happiness}++;
if ($result > 0){
print "$idea produced positive result.\n";
$self->{things_to_do_again}->{$idea} = 'YES';
$self->{happiness}++;
}
else{
print "Note to self: what the hell were you thinking ";
print "when you decided to $idea?\n";
$self->{things_to_do_again}->{$idea} = 'NO';
}
$self->{tried}->{$idea}++;
}
return $result;
}
Note that trying new things is condusive to happiness,
and that you can't do this unless you
use Tie::RefHash; This is where most
non-geeks go wrong. Truth is, most of them would be
miserable if sex() weren't considerably
simpler to implement.
Also note that calling experiment() with
the wrong parameters can forestall further calls to
birthday(). It is suggested, therefore,
that you use caution; |