in reply to Re: Java Style Interface Objects?
in thread Java Style Interface Objects?

Not to nit-pick, but it is Class::Trait actually. (which is only important because search.cpan.org's search engine being the way it is, Class::Trait does not come up on the first page of a search for Class::Traits).

Aside from the misspelling ;) chromatic is absolutely correct. The following code will do what you are asking for:

# in FooInterface.pm package FooInterface; use Class::Trait 'base'; our @REQUIRES = qw(foo bar baz);
Then in the class you want to conform to the FooInferface, you can do this:
package Foo; use Class::Trait 'FooInterface'; sub foo {} sub bar {} # missing &baz
And you will get this at (sorta) compile time.
stevan% perl test.pl Requirement (baz) for FooInterface not in Foo at test.pl line 0 INIT failed--call queue aborted.
I say "sorta" compile time because it is actually during the INIT phase of the compilation cycle. Which is problematic if you are running under mod_perl, or loading the Foo class with require. Both of these limitations (and the appropriate workarounds) are documented in the Class::Trait POD.

-stvn