I'm partial to const subs and namespace purity:
package My::Class;
use vars qw( $VERSION );
BEGIN { $VERSION= 1.01 }
package My::Class::_implement;
BEGIN {
my $offset= 0;
for my $member ( qw( FOO BAR BAZ BIF ) ) {
eval "sub $member() { $offset }; 1"
or die "eval failed: $@";
$offset++;
}
}
sub My::Class::GetObjectPackage {
my $class= shift(@_);
return $class . "::Object";
}
sub My::Class::new {
my $class= shift(@_);
bless [], $class->GetObjectPackage();
}
sub My::Class::Object::Foo {
my $self= shift(@_);
my $value= $self->[FOO];
$self->[FOO]= shift(@_) if @_;
return $value;
}
-
tye