package Foo; use strict; use warnings; sub foo { print "foo\n" } sub bar { my $class = shift; if ( my $f = $class->can("foo") ) { print "yes, I can foo\n"; $f->(); } } package Bar; use strict; use warnings; our @ISA = "Foo"; sub foo; package main; use strict; use warnings; Bar->bar(); # OUTPUT: yes, I can foo Undefined subroutine &Bar::foo called at ./test_foo line 17. #### sub foo {}