#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;
use 5.010;

# Parent
package Foo {
	use strict;
	use warnings;

	sub new { bless {}, shift }
	sub bar { 1448 }
}

# Child
package Bar {
	use strict;
	use warnings;
	our @ISA = qw/Foo/;

	sub new { bless {}, shift }
	sub baz { 1337 }
}

sub do_stuff {
	my Bar $instance = shift;

	eval {
		say $instance -> bar;
		say $instance -> baz;
	}; if ($@) {
		say "Something went wrong: $@";
		say "Tested instance: ". (Dumper $instance);
	} else {
		say "OK";
	}
}

my $foo = new Foo;
my $bar = new Bar;

say 'Testing $foo';
do_stuff $foo;

say 'Testing $bar';
do_stuff $bar;
