#!perl use strict; use warnings; use XML::Parser; my $parser = new XML::Parser(Handlers => {'Start' => \&startHandler, 'Char' => \&charHandler, 'End' => \&endHandler}); my $mode = undef; $parser->parsefile('data.xml'); sub startHandler { my $self = shift(); my $element = shift(); my %attributes = @_; if ($element eq 'LastTradePrice') { $mode = 'LastTradePrice'; } elsif ($element eq 'NetChange') { $mode = 'NetChange'; } elsif ($element eq 'LastTradeDate') { $mode = 'LastTradeDate'; } } sub charHandler { my $self = shift(); my $str = shift(); if (defined $mode) { print "$mode: $str\n"; } } sub endHandler { my $self = shift(); $mode = undef; }