Ответ 1
Я бы использовал LWP:: Simple для этого.
#!/usr/bin/perl
use strict;
use warnings;
use LWP::Simple;
my $url = 'http://marinetraffic2.aegean.gr/ais/getkml.aspx';
my $file = 'data.kml';
getstore($url, $file);
Я запускаю Perl в Windows XP, и мне нужно загрузить файл из URL http://marinetraffic2.aegean.gr/ais/getkml.aspx.
Как мне это сделать? Я попытался использовать WWW:: Mechanize, но я не могу обойти его.
Это код, который я использовал:
my $url = 'marinetraffic2.aegean.gr/ais/getkml.aspx';
my $mech = WWW::Mechanize->new;
$mech->get($url);
Я бы использовал LWP:: Simple для этого.
#!/usr/bin/perl
use strict;
use warnings;
use LWP::Simple;
my $url = 'http://marinetraffic2.aegean.gr/ais/getkml.aspx';
my $file = 'data.kml';
getstore($url, $file);
Я использовал File:: Fetch, поскольку это основной модуль Perl (мне не нужно было устанавливать какие-либо дополнительные пакеты) и попробуйте несколько способов загрузки файла в зависимости от того, что установлено в системе.
use File::Fetch;
my $url = 'http://www.example.com/file.txt';
my $ff = File::Fetch->new(uri => $url);
my $file = $ff->fetch() or die $ff->error;
Обратите внимание, что этот модуль на самом деле попытается сначала использовать LWP, если он установлен...
Если загрузка этого файла - это все, что вы на самом деле делаете, вам лучше пойти с ответом @davorg.
Если это часть более крупного процесса, вы получаете доступ к ресурсу, который вы загрузили в виде строки, используя метод content
на вашем $mech
объект.
use WWW::Mechanize;
my $url = 'marinetraffic2.aegean.gr/ais/getkml.aspx';
my $local_file_name = 'getkml.aspx';
my $mech = WWW::Mechanize->new;
$mech->get( $url, ":content_file" => $local_file_name );
Это фактически обтекает LWP::UserAgent->get
. Подробнее здесь:
http://search.cpan.org/dist/WWW-Mechanize/lib/WWW/Mechanize.pm# $mech- > get ($ uri)