Я пытаюсь получить XML-файл из базы данных с помощью WWW :: Mechanize. Я знаю, что файл довольно большой (больше, чем моя память), и он постоянно падает, либо я пытаюсь просмотреть его в браузере, либо попытаться сохранить его в файле с помощью get(). Я планирую пользователю XML :: Twig в будущем, но я никогда не могу сохранить результат в файле.Perl - размер объекта слишком большой
Кто-нибудь знает, как разделить механизированный объект в маленьких кусках, получить их один за другим и сохранить их в файле один за другим, не исчерпывая память?
Это запрос api: ArrayExpress Programmatic Access.
спасибо.
#!/usr/bin/perl
use strict;
use warnings;
use WWW::Mechanize;
my $base = 'http://www.ebi.ac.uk/arrayexpress/xml/v2/experiments';
#Parameters
my $query ='?species="homo sapiens"' ;
my $url = $base . $query;
# Create a new mechanize object
my $mech = WWW::Mechanize->new(stack_depth=>0);
# Associate the mechanize object with a URL
$mech->get($url);
#store xml content
my $content = $mech->content;
#open output file for writing
unlink("ArrayExpress_Human_Final.txt");
open($fh, '>>:encoding(UTF-8)','ArrayExpress_Human_Final.txt') || die "Can't open file!\n";
print $fh $content;
close $fh;
Спасибо! Ваш ответ был действительно полезен! –