package XNObject; use strict; sub new { my $class = shift; my %fields = ( _modified => 0, _actual => 0, _f => {}, # "real" object fields ); my $self = { %fields, }; bless $self, $class; } our $AUTOLOAD; sub AUTOLOAD { my $self = shift; my $value = shift; my $type = ref($self) or croak "No class for AUTOLOAD"; my $name = $AUTOLOAD; $name =~ s/.*://; if(defined($value)){ return $self->{_f}->{$name} = $value; }else{ return $self->{_f}->{$name}; } } # other stuff skipped 1;