📜  使用 Perl 从 Web 下载文件(1)

📅  最后修改于: 2023-12-03 15:22:15.435000             🧑  作者: Mango

使用 Perl 从 Web 下载文件

Perl 是一种非常强大的脚本语言,可以用于几乎所有的编程任务,包括从 Web 上下载文件。在这篇文章中,我们将介绍如何使用 Perl 编写一个简单的程序来从 Web 下载文件。

使用 HTTP::Tiny 模块下载文件

HTTP::Tiny 是一个轻量级的 Perl 模块,用于发送 HTTP 请求和接收 HTTP 响应。它非常易于使用,并且已经成为 Perl 标准库的一部分。

以下是使用 HTTP::Tiny 模块下载文件的示例代码:

use HTTP::Tiny;

my $url = 'https://example.com/file.txt';
my $filename = 'file.txt';

my $http = HTTP::Tiny->new();
my $response = $http->get($url);

if ($response->{status} eq '200') {
    open(my $fh, '>', $filename) or die "Could not open file '$filename': $!";
    print $fh $response->{content};
    close $fh;
} else {
    die "Failed to download file: $response->{reason}\n";
}

在这个例子中,我们首先定义了要下载的文件的 URL 和文件名。然后我们创建了一个 HTTP::Tiny 对象,并使用它发送一个 GET 请求。最后,我们将响应内容写入本地文件中,如果下载失败则抛出异常。

使用 LWP::Simple 模块下载文件

LWP::Simple 是另一个 Perl 模块,用于发送 HTTP 请求和接收 HTTP 响应。与 HTTP::Tiny 不同,它是一种更高级的模块,它提供了更多的功能和选项。

以下是使用 LWP::Simple 模块下载文件的示例代码:

use LWP::Simple;

my $url = 'https://example.com/file.txt';
my $filename = 'file.txt';

my $response = getstore($url, $filename);

if (is_success($response)) {
    print "File downloaded successfully\n";
} else {
    die "Failed to download file: $response\n";
}

在这个例子中,我们使用 LWP::Simple 模块的 getstore() 函数来下载文件。getstore() 函数返回 HTTP 响应码,如果下载成功则返回 HTTP::Status 模块中的常量值。如果下载失败,则抛出异常。

总结

以上是使用 Perl 从 Web 下载文件的两种方法。无论您选择哪种方法,这两个模块都非常强大和易于使用,并且可以根据需要进行配置和扩展。希望这篇文章对您有所帮助!