package Aspect::Library::Listenable::Event; use strict; our $VERSION = '1.03'; sub new { my $class = shift; bless { @_ }, $class; } sub AUTOLOAD { my ($self, $value) = @_; my $key = our $AUTOLOAD; return if $key =~ /DESTROY$/; $key =~ s/^.*:://; return @_ == 1 ? $self->{$key} : ( $self->{$key} = $value ); } sub clone { my $self = shift; my $class = ref $self; my $clone = $class->new; while ( my ($key, $value) = each %$self ) { $clone->{$key} = $value; } return $clone; } sub as_string { my $self = shift; local $_; return join ', ', map { "$_:$self->{$_}" } sort keys %$self; } 1;