'reaction' => [ { 'substrate' => { 'name' => 'cpd:C00084' }, 'name' => 'rn:R00710', 'product' => { 'name' => 'cpd:C00033' }, 'type' => 'reversible' }, { 'substrate' => [ { 'name' => 'cpd:C00068' }, { 'name' => 'cpd:C00022' } ], 'name' => 'rn:R00014', 'product' => { 'name' => 'cpd:C05125' }, 'type' => 'irreversible' }, #### $data = $xml->XMLin($input_file); foreach $g (@{$data->{reaction}}) { foreach $h ($g->{substrate}){ $temp1 = $h->{name}; foreach $i ($g->{product}->{name}){ $temp2 = $i->{name} print "$temp1 -- $temp2\n"; } ] }