package Your::Class;
our $VERSION= 1.001_001;
package Your::Class::_Implementation;
BEGIN {
require constant;
my $offset= 0;
for my $member ( qw<
_NAME _ADDRESS _PHONE ...
> ) {
constant->import( $member, $offset++ );
}
}
sub Your::Class::new {
...
$self->[_NAME]= ...;
}
####
...
package Your::CLass::_Implementation;
...
sub new {
...
}
...
package Your::Class;
BEGIN {
require Exporter;
for my $method ( qw<
new ...
> ) {
Exporter::import(
'Your::Class:_Implementation', $method );
}
}
####
package Your::Class;
...
sub C'Name() { 0; }
...
package Something::Completely::Different;
...
sub C'Index() { 0; }
sub C'Name() { 1; } # Boom!
...