@Cow::ISA = qw(Animal);
-Or declare it as package global variable:
+Or declare it as a package global variable:
package Cow;
our @ISA = qw(Animal);
Now, what about data?
-=head2 A horse is a horse, of course of course -- or is it?
+=head2 A horse is a horse, of course of course, or is it?
Let's start with the code for the C<Animal> class
and the C<Horse> class:
list, as per usual.
Now for the fun part: Perl takes the class in which the instance was
-blessed, in this case C<Horse>, and uses that calss to locate the
+blessed, in this case C<Horse>, and uses that class to locate the
subroutine. In this case, C<Horse::sound> is found directly (without
using inheritance). In the end, it is as though our initial line were
written as follows:
Inside C<Horse::name>, the C<@_> array contains:
- (C<$horse>, "some", "unnecessary", "args")
+ ($horse, "some", "unnecessary", "args")
so the C<shift> stores C<$horse> into C<$self>. Then, C<$self> gets
de-referenced with C<$$self> as normal, yielding C<"Mr. Ed">.
Notice we're back to a class method, so the two arguments to
C<Horse::named> are C<Horse> and C<Mr. Ed>. The C<bless> operator
-not only blesses C<$name>, it also returns that reference.
+not only blesses C<\$name>, it also returns that reference.
This C<Horse::named> method is called a "constructor".
too. Therefore, it's never a good idea to define the data layout in a
way that's different from the data layout of the base classes. In fact,
it's a good idea to use blessed hash references in all cases. Also, this
-is also why it's important to have constructors do the low-level work.
-So, let's redefine C<Animal>:
+is why it's important to have constructors do the low-level work. So,
+let's redefine C<Animal>:
## in Animal
sub name {