in reply to Create OO object from XML

I'd use XML::Twig for that sort of task. Regardless, you'd use the same trick to get the data into your object. You don't show the code that sets up the parser and associates startElement with the start element event, but where you do that at present you probably have something like:

my $parser = XML::Parser->new(Handlers => {Start => \&startElement});

You can change that to:

my $parser = XML::Parser->new( Handlers => { Start => sub {$self->startElement(@_);} } );

then startElement becomes a member:

sub startElement { my ($self, $parseinst, $element, %attrs ) = @_;

and a complete sample would look like:

use strict; use warnings; use XML::Parser; sub new { my ($class, %params) = @_; my $self = bless \%params, $class; my $parser = XML::Parser->new( Handlers => { Start => sub {$self->startElement(@_);} } ); $parser->parse(*DATA); return $self; } sub startElement { my ($self, $parseinst, $element, %attrs ) = @_; return if $element ne $self->{id}; $self->{Property} = $attrs{Property}; } my $obj = main->new(id => 'child'); print $obj->{Property}; __DATA__ <root> <child Property='Hello World'/> </root>
True laziness is hard work