如何使用Perl下载文件?

时间:2011-01-12 14:06:20

标签: perl download

我在Windows XP上运行Perl,我需要从网址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);

5 个答案:

答案 0 :(得分:60)

我会使用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);

答案 1 :(得分:18)

我使用File::Fetch,因为这是一个核心Perl模块(我不需要安装任何其他软件包),并会尝试多种不同的方式来下载文件,具体取决于系统上安装的内容。 / p>

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,该模块实际上会先尝试使用LWP ......

答案 2 :(得分:4)

如果您真正下载该文件,最好使用@davorg的答案。

如果这是更大流程的一部分,则可以使用$mech对象上的方法content以字符串形式访问您下载的资源。

答案 3 :(得分:4)

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

更多详细信息,请访问WWW::Mechanize docs page

答案 4 :(得分:0)

以防万一有人需要oneliner ;)

perl -e 'use File::Fetch;my $url = "http://192.168.1.10/myFile.sh";my $ff = File::Fetch->new(uri => $url);my $file = $ff->fetch() or die $ff->error;'

只需更改$url的内容