The downside of that is that you would be parsing your XML twice though. Once with XML::Twig and once with MARC::File::XML.
That said, if you have a huge result set, it would probably be better (or even necessary) to use XML::Twig::parseurl() or roll your own using LWP with callbacks and a pull parser like http://search.cpan.org/dist/XML-LibXML/lib/XML/LibXML/Parser.pod#Pull_Parser_(Reader) . I built a OAI-PMH harvester for Koha, which can pull down a lot of huge MARCXML records; I have a process handling the HTTP request with LWP and it writes the XML to a pipe in chunks using a callback. I have a second process read from the pipe using XML::LibXML::Reader and for each MARCXML record that comes through it uses "new_from_xml()". It works really really well. On Thu, Apr 19, 2018 at 10:34 AM, Karl Billeter <kbille...@gmail.com> wrote: > On Thu, Apr 19, 2018 at 12:25:05AM +0000, Andy Kohler wrote: > > > Problem: Converting from MARCXML via MARC::File::XML seems to require > > reading the records from a file. I've already got the XML stored in a > > variable, retrieved via LWP::Simple->get(). > > > > Do I have to write the XML to a file, then read it in again to convert > it? > > Or am I just missing something obvious? > > Looking at the module documentation new_from_xml() should work but only > for a > single record chunk. I'd probably use that and something like XML::Twig to > split the records. > > K >