You are passing a filehandle to a method that expects a path so the filehandle object ends up stringified and the module attempts to read from a file named "IO::File=GLOB(0x20569a8)".
XML::Parser is too low-level for almost anything. Unless you are writing another XML handling module, you ought to use something with a more convenient API. XML::Rules, XML::Twig or (iff you are used to those kinds of technlogies from other languages) XML::LibXML.
1984 was supposed to be a warning,
not a manual!