X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlboot.pod;h=6e3f5ac8ab8a6775c55e666852df689e79869b31;hb=0c42fe95656e99f238a0bcf90ab2476c175615b7;hp=8eaac8663e90e1ee51b8a7c351aa7c45441ac93b;hpb=890a53b979262c647cff6eff22d9cf68bc23d720;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlboot.pod b/pod/perlboot.pod index 8eaac86..6e3f5ac 100644 --- a/pod/perlboot.pod +++ b/pod/perlboot.pod @@ -26,7 +26,7 @@ Let's let the animals talk for a moment: print "a Horse goes neigh!\n"; } sub Sheep::speak { - print "a Sheep goes baaaah!\n" + print "a Sheep goes baaaah!\n"; } Cow::speak; @@ -106,7 +106,7 @@ example: print "a Horse goes neigh!\n"; } sub Sheep::speak { - print "a Sheep goes baaaah!\n" + print "a Sheep goes baaaah!\n"; } @pasture = qw(Cow Cow Horse Sheep Sheep); @@ -172,7 +172,7 @@ This method provides the constant text for the sound itself. sub sound { "moooo" } sub speak { my $class = shift; - print "a $class goes ", $class->sound, "!\n" + print "a $class goes ", $class->sound, "!\n"; } } @@ -184,7 +184,7 @@ returns C. But how different would this be for the C? sub sound { "neigh" } sub speak { my $class = shift; - print "a $class goes ", $class->sound, "!\n" + print "a $class goes ", $class->sound, "!\n"; } } @@ -200,7 +200,7 @@ definition for C: { package Animal; sub speak { my $class = shift; - print "a $class goes ", $class->sound, "!\n" + print "a $class goes ", $class->sound, "!\n"; } } @@ -238,10 +238,10 @@ not a simple single value, because on rare occasions, it makes sense to have more than one parent class searched for the missing methods. If C also had an C<@ISA>, then we'd check there too. The -search is recursive, depth-first, left-to-right in each C<@ISA>. -Typically, each C<@ISA> has only one element (multiple elements means -multiple inheritance and multiple headaches), so we get a nice tree of -inheritance. +search is recursive, depth-first, left-to-right in each C<@ISA> by +default (see L for alternatives). Typically, each C<@ISA> has +only one element (multiple elements means multiple inheritance and +multiple headaches), so we get a nice tree of inheritance. When we turn on C, we'll get complaints on C<@ISA>, since it's not a variable containing an explicit package name, nor is it a @@ -336,7 +336,7 @@ subroutine. Also note that the C classname is now hardwired into the subroutine selection. This is a mess if someone maintains the code, -changing C<@ISA> for and didn't notice C there in +changing C<@ISA> for C and didn't notice C there in C. So, this is probably not the right way to go. =head2 Starting the search from a different place @@ -382,7 +382,8 @@ listed in C<@ISA>) automatically: } So, C means look in the current package's C<@ISA> for -C, invoking the first one found. +C, invoking the first one found. Note that it does I look in +the C<@ISA> of C<$class>. =head2 Where we're at so far... @@ -422,7 +423,7 @@ and the C class: { package Animal; sub speak { my $class = shift; - print "a $class goes ", $class->sound, "!\n" + print "a $class goes ", $class->sound, "!\n"; } } { package Horse; @@ -573,7 +574,7 @@ C, so let's put it there: { package Animal; sub speak { my $class = shift; - print "a $class goes ", $class->sound, "!\n" + print "a $class goes ", $class->sound, "!\n"; } sub name { my $self = shift; @@ -609,7 +610,7 @@ shows up as we saw it just now. All we need is for a method to detect if it is being called on a class or called on an instance. The most straightforward way is with the C operator. This returns a string (the classname) when used on a -blessed reference, and C when used on a string (like a +blessed reference, and an empty string when used on a string (like a classname). Let's modify the C method first to notice the change: sub name {