my $xml = qx/mudraw -ttt $file/; my $tree = XMLin($xml, ForceArray => [qw/page block line span char/]); #going through the structure for my $page (@{$tree->{page}}) { for my $block (@{$page->{block}}) { for my $line (@{$block->{line}}) { for my $span (@{$line->{span}}) { my $string = join '', map {$_->{c}} @{$span->{char}}; #... do my stuff } } } $page_index ++ }