in reply to Trouble using XML::LibXML

BTW:
foreach (my ($key, $value) = each %linked_counts_by_abbr){ print OUTPUT "$key => $value\n"; }
I would be surprised if this loop does what you think and hope it does. Iteration over a hash with each is usually implemented with a  while loop (see perlsyn for  while loop info).
>perl -wMstrict -le "my %hash = qw(a 1 b 2 c 3 d 4); print 'foreach loop output:'; foreach (my ($k, $v) = each %hash) { print qq{$k => $v}; } print 'while loop output:'; keys %hash; while (my ($k, $v) = each %hash) { print qq{$k => $v}; } " foreach loop output: c => 3 c => 3 while loop output: c => 3 a => 1 b => 2 d => 4
(PS: Does anyone know why the OP is rendering so strangely?)