【发布时间】:2020-06-22 17:55:25
【问题描述】:
我正在尝试编写 Perl 脚本以从 Web 下载文件然后对其进行处理。我的服务器空间中只安装了CGI.pm。请多多指教。
【问题讨论】:
-
还有核心File::Fetch模块。
标签: perl
我正在尝试编写 Perl 脚本以从 Web 下载文件然后对其进行处理。我的服务器空间中只安装了CGI.pm。请多多指教。
【问题讨论】:
标签: perl
我想你有点困惑。如果您尝试下载文件,那么 CGI.pm 对您没有用处。 CGI.pm 帮助您编写 CGI 程序;它无法帮助您下载文件。
要从 Web 服务器下载文件,您需要充当 Web 客户端的东西。浏览器是一个 Web 客户端,但我们需要一个类似的程序 - 发送 HTTP 请求并处理 HTTP 响应。
最明显的选项是LWP::Simple。这包括一个名为getstore() 的函数。
my $code = getstore($url, $file);
你说这对你不可用。为了编写任何复杂的 Perl 程序,您应该找到一个托管它们的地方,让您可以访问许多 Perl 模块(或允许您安装它们)。很多现代 Perl 编程都包含将 CPAN 模块中的功能连接在一起,并且由于无法访问这些功能,您正在严重减少可用的选项。
但还有几个其他选项是标准 Perl 发行版的一部分,应该可供您使用。
HTTP::Tiny 自 2011 年 Perl 5.14 以来一直是核心 Perl 发行版的一部分。您可以使用其mirror() 函数下载您的文件。
File::Fetch 自 2007 年 Perl 5.10 以来一直是 Perl 代码分发的一部分。您可以这样使用它:
use File::Fetch;
my $ff = File::Fetch->new(uri => $your_uri);
# $where will contain the path to the downloaded file
my $where = $ff->fetch or die $ff->error;
【讨论】:
使用LWP::Simple 是一个很好的起点
【讨论】: