web-dev-qa-db-fra.com

Comment télécharger un fichier en utilisant Perl?

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);
29
Sfairas

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);
60
Dave Cross

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é ...

19
maloo
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 .

4
Tomasz

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.

4
JB.