>From "Learning PO, R & M", chap. 9:

Following along in the book (more or less faithfully) I now have:

 #!/usr/bin/perl
 use warnings;
 use strict;

 { package LivingCreature;
   sub new {
     my $class = shift;
     my $name = shift;
     bless \$name, $class;
   }
   sub name {
     my $either = shift;
     ref $either
       ? $$either                # it's an instance
       : "an unnamed $either";   # it's a class, return generic
   }
   sub speak {
     my $either = shift;
     if (@_) {                   # something to say
       my $dialogue = shift;
       print $either->name, " says, \"$dialogue\"!\n";
     } else {
       print $either->name, " goes ", $either->sound, "!\n";
     }
   }
 }


 { package Person;
   our @ISA = qw(LivingCreature);
   sub sound {
     my @sound = qw(ahhh hmmm ohhh well ahem);
     $sound[rand(5)];
   }
   sub sound2 { "..." }
 }

And I then write:

my $john = Person->new("John");
print $john->speak("Hello");

This works fine except...

sputnik:~/-> ./animals
John says, "Hello"!
1sputnik:~/->

You'll see there is a "1" after the 'speak' routine's output (each time). I
can't see where the "1" comes from.

-Kevin

-- 
Kevin Pfeiffer
International University Bremen
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to