Perl通用文件获取模块-File::Fetch
2020-03-04 22:03:40 阿炯

本站赞助商链接,请多关照。 File::Fetch - A generic file fetching mechanism(一种通用的文件获取机制)

该内置核心模块提供了多种文件获取的方法,包括通过ftp,http,file,git,rsync等方式。

File::Fetch对象提供了下述的调用方法

$ff->uri
传递给构造函数的uri

$ff->scheme
应用协议(file,http等)

$ff->host
主机名,或'localhost' for a 'file://'

$ff->vol
不同操作系统下的路径名称

$ff->share
在具有网络共享概念的系统(当前仅限Windows)上,从文件中返回共享名:///url,在其他操作系统上返回空。

$ff->path
来自uri的路径将至少是一个"/"。

$ff->file
远程文件的名称。对于本地文件名,将使用$ff->output_file的结果。

$ff->file_default
默认的本地文件名,如果相应的URI中有相应用的文件名则$ff->output_file即为文件,如果没有如请求http://www.freeoa.net/则会暗示为index.html这个文件名称。

$ff->output_file
输出的文件名称,多数情况与$ff->file一致,但如果有查询参数的话会去掉的,比如请求:http://example.com/index.html?x=y

将会保存为文件index.html而非index.html?x=y。

调用方法

$ff = File::Fetch->new( uri => 'http://some.where.com/dir/file.txt' );

Returns false on failure.

$where = $ff->fetch( [to => /my/output/dir/ | \$scalar] )

获取请求的文件并返回该文件的完整路径。 默认会写入到cwd()函数指定的位置,但可以通过传参来修改。

##将文件取得后放入/tmp下,文件的全路径置于$where中
$where = $ff->fetch( to => '/tmp' );

##将文件内容全部置于$scalar,文件的全路径置于$where中,文件会下载到临时目录中以便在退出时清理掉它。
$where = $ff->fetch( to => \$scalar );
如果文件下载成功,将返回其全路径,否则返回false。

$ff->error([BOOL])

以字符串形式返回上次遇到的错误。传递一个真值可获得Carp::longmess()输出。

该模块中的调用Perl中所提供的方法与系统层的工具或模块的对应关系来实现其所对应的功能。
file    => LWP, lftp, file
http    => LWP, HTTP::Lite, wget, curl, lftp, fetch, lynx, iosock
ftp     => LWP, Net::FTP, wget, curl, lftp, fetch, ncftp, ftp
rsync   => rsync
git     => git

映射表
LWP => lwp
HTTP::Lite  => httplite
HTTP::Tiny  => httptiny
Net::FTP    => netftp
wget=> wget
lynx=> lynx
ncftp       => ncftp
ftp => ftp
curl=> curl
rsync       => rsync
lftp=> lftp
fetch       => fetch
IO::Socket  => iosock

该模块可从$ENV{ftp_proxy}这个环境变量中取得代理信息。

当然也有一些全局的参数($File::Fetch::)来控制程序的某些行为。

File::Fetch