#!/usr/bin/perl -w use strict; package Base; sub defaults { warn "Doing defaults!\n"; } package Child; @Child::ISA = 'Base'; sub new { bless({}, $_[0]); } package main; my $c = Child->new(); for (qw( SUPER::defaults defaults Base::defaults )) { if (defined( my $sub = $c->can($_) )) { warn "\$c can do $_!\n"; $c->$sub(); } else { warn "\$c cannot do $_.\n"; } }