J'exécute Perl sur Windows XP et je dois télécharger un fichier à partir de l'URL http://marinetraffic2.aegean.gr/ais/getkml.aspx .
Comment dois-je procéder? J'ai essayé d'utiliser WWW :: Mechanize, mais je n'arrive pas à comprendre.
Voici le code que j'ai utilisé:
my $url = 'marinetraffic2.aegean.gr/ais/getkml.aspx';
my $mech = WWW::Mechanize->new;
$mech->get($url);
J'utiliserais LWP :: Simple pour cela.
#!/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);
J'ai utilisé File :: Fetch car il s'agit d'un module Perl de base (je n'avais pas besoin d'installer de packages supplémentaires) et j'essaierai un certain nombre de façons différentes de télécharger un fichier en fonction de ce qui est installé sur le système.
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;
Notez que ce module essaiera en fait d'utiliser LWP d'abord s'il est installé ...
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 );
Cela enveloppe en fait le LWP::UserAgent->get
.
Plus de détails peuvent être trouvés sur WWW :: page de documentation de Mechanize .
Si le téléchargement de ce fichier est tout ce que vous faites réellement, vous feriez mieux d'aller avec la réponse de @ davorg.
Si cela fait partie d'un processus plus vaste, vous accédez à la ressource que vous avez téléchargée sous forme de chaîne en utilisant la méthode content
sur votre $mech
objet.