http://www.perlmonks.org?node_id=51770


in reply to My Story

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;