my $obj = Win32::Event2Log->new(engine => 'type');
####
use 'base' Win32::Event2Log::Engine;
sub new {
my ($class, %args) = @_;
my $self = bless {%args}, $class;
# select_engine inherited
return $self->select_engine($self->{engine});
}
####
use Win32::Event2Log::Reader;
use Win32::Event2Log::Wevtutil;
sub select_engine {
shift; # throw away Event2Log object, unless needed/wanted
my ($engine) = @_;
my %engines = (
reader => sub { return Win32::Event2Log::Reader->new(...); },
wrapper => sub { return Win32::Event2Log::Wevtutil->new(...); },
);
$engines{$engine}->();
}