--- lib/XML/Simple.pm.orig	Mon Apr  5 09:12:47 2004
+++ lib/XML/Simple.pm	Thu Jun 17 13:41:37 2004
@@ -331,7 +331,7 @@
   if($filename) {
     # $tree = $xp->parsefile($filename);  # Changed due to prob w/mod_perl
     local(*XML_FILE);
-    open(XML_FILE, '<', $filename) || croak qq($filename - $!);
+    open(XML_FILE, '<'. $filename) || croak qq($filename - $!);
     $tree = $xp->parse(*XML_FILE);
     close(XML_FILE);
   }
@@ -541,9 +541,9 @@
     }
     else {
       local(*OUT);
-      open(OUT, '>', "$self->{opt}->{outputfile}") ||
+      open(OUT, '>'. "$self->{opt}->{outputfile}") ||
         croak "open($self->{opt}->{outputfile}): $!";
-      binmode(OUT, ':utf8') if($] >= 5.008);
+#      binmode(OUT, ':utf8') if($] >= 5.008);
       print OUT $xml || croak "print: $!";
       close(OUT);
     }
@@ -1535,7 +1535,7 @@
 sub numeric_escape {
   my($self, $data, $level) = @_;
 
-  use utf8; # required for 5.6
+#  use utf8; # required for 5.6
 
   if($self->{opt}->{numericescape} eq '2') {
     $data =~ s/([^\x00-\x7F])/'&#' . ord($1) . ';'/gse;
@@ -1569,7 +1569,7 @@
   my @keys = $self->{opt}->{nosort} ? keys %$hashref : sort keys %$hashref;
   foreach $key (@keys) {
     $value = $hashref->{$key};
-    return($hashref) unless(UNIVERSAL::isa($value, 'HASH'));
+    return($hashref) unless(UNIVERSAL::isa($value||'', 'HASH'));
 
     if(ref($self->{opt}->{keyattr}) eq 'HASH') {
       return($hashref) unless(defined($self->{opt}->{keyattr}->{$parent}));