In article <[EMAIL PROTECTED]>,
 [EMAIL PROTECTED] (Bob Showalter) writes:
>Michael Kraus wrote:
>> I'm wanting to write a method in an abstract class that must be
>> overriden by it's children. If it is called directly (i.e. without
>> being overriden) then it registers an error, but if its called via an
>> overriding method then do some common functionality.
>
>That's not an abstract class.
>
>Anyway, here's how to do it:
>
>   sub foo {
>       my $self = shift;
>       my $class = ref $self;
>       if ($class->can('foo') eq \&foo) {
>           print "$class does not override foo\n";
>       }
>       else {
>           print "$class overrides foo\n";
>       }
>   }
>
>See perldoc UNIVERSAL for caveats on the can() method.

TMTOWTDI:

sub foo {
  my $self = shift;
  if (ref $self eq __PACKAGE__) {
    print "Direct call\n";
  }
  else {
    print "Called from subclass\n";
  }

-- 
Peter Scott
http://www.perldebugged.com/
*** NEW *** http://www.perlmedic.com/

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to