# $Id$ package Util::Message; use warnings; use strict; use Carp qw(croak); my $id = 0; sub new { my ($class, $fields) = @_; my $self = bless $fields, $class; $self->{id} = ++$id; $self->{ts00created} = time(); return $self; } our $AUTOLOAD; sub AUTOLOAD { my $method = $AUTOLOAD; my $self = shift; $method =~ s/^.*:://; croak "can't use '$method' as a field" if ( $method eq "new" or $method eq "AUTOLOAD" or $method eq "DESTROY" ); return $self->{$method}; } sub DESTROY { } sub say { my $self = shift; push @{$self->{responses}}, [ say => @_ ]; } sub do { my $self = shift; push @{$self->{responses}}, [ do => @_ ]; } sub act { my $self = shift; push @{$self->{responses}}, [ act => @_ ]; } sub msg { my $self = shift; push @{$self->{responses}}, [ msg => @_ ]; } 1;