Assuming line 31 is as you say, this means
$alldrug does not contain hashref. If we trace that back, its value is assigned on line 29. That line looks fine (
XMLin should return a data structure that mimics for XML), so that implies that your data structure is not as you expect. Are you sure that your
$tree->{drug} branch contains a hash ref and not, for example, an array ref? To interrogate your data structure, try following the directions in
Basic debugging checklist and use
Data::Dumper or
Data::Dump (It looks like you tried that because of your commented
#print pp($alldrug); line, but then again you can't get that error if
$alldrug contains what you seem to expect).
#11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.