in reply to Java Style Interface Objects?

If dieing at runtime isn't good enough for you, I would assume you do not have tests to catch your errors before running your code 'in the wild'.

While it would be a much better idea to integrate a test suite into your development, I believe it will be possible to get the results you want without taking that step.

You might want to try something like this (untested) code.

package My::Base; use strict; sub new { my $class = shift; die "Override must_be_overridden" if ($class->can('must_be_overridden') == \&must_be_overridden); } sub must_be_overridden { die "Cannae call this method - Override me!"; }

Please note that as this uses can it will not work well if you are using AUTOLOADER