sub new {
my ($class, $self) = @_;
unless (&work($self) || &sleep($self)) {
$self->smoke;
$self->cancer_probablity += rand(0.001);
}
bless ($self, undef);
}
package Jarich;
use strict;
sub new {
my ($class) = @_;
bless ({}, $class);
}
sub freeload
{
my @needs = qw/money clothes shoes money books computers
games bedding sleep time food/;
print "Mum/Dad I need more ", $needs[rand(@needs)], "\n";
}
sub annoy_parents
{
my @actions = ("hit sister", "kick dog", "whine",
"whine", "whine", "need more", "beg", "borrow",
"steal", "go out with a dag");
print $actions[rand(@actions)], "\n";
print $actions[rand(@actions)], "\n";
}
sub live
{
my $self = shift;
my @actions = ("drink", "cycle", "play", "paint", "eat");
# fun stuff on weekends.
if(rand(7) <= 2) {
print $actions[rand(@actions)], " ";
$self->{cancer_probablity} += rand(0.0001);
}
else {
$self->work();
}
$self->sleep();
}
sub work
{
print "bored bored bored bored bored: ke-ching! Money++";
}
sub sleep
{
print "ZZZZZzzzzzzzzzzzzzzzzzzz\n";
}
sub die
{
my $self = shift;
if(rand(100) < 2)
{
return 1;
}
elsif($self->{cancer_probability} > 100)
{
return 1;
}
return 0;
}
#========================================================
package Main;
my $jarich = new Jarich;
my $age = 0;
until ($age++ > 18) {
$jarich->freeload() && $jarich->annoy_parents();
}
until ($jarich->die()) {
$jarich->live();
$age++;
}
print "RIP jarich. 1978-", 1978+$age, "\n";
But that's because I'm a pedant, and insist on code that does stuff. :)