I modified your code below to see how XML::Simple handles this, is seems to do the same thing, i suspect its one of the underlying modules possibly
XML::Parser thats causing this:
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use XML::Simple;
my $xml = XMLin(qq{<root t="space tab\tnewline\nend"/>});
print Dumper $xml;