The Class::Contract module implements strong encapsulation, static inheritance, and design-by-contract condition checking for object-oriented Perl. The module provides a declarative syntax for attribute, method, constructor, and destructor definitions at both the object and class level. Pre-conditions, post-conditions, and class invariants are also fully supported. WWW: https://metacpan.org/release/Class-Contract