use strict;use warnings;use FileBasename;use FileCopy;use TextParseWords;ARGV 2 or die Syntax $0 target dir filename hash url filename mirror n;my $url_filename;my $target = globshift ARGV;my $filena
#该脚本用于下载指定的文件 #需要在命令行中指定目标目录、文件名、文件哈希值和下载链接等参数 #也可以指定多个镜像地址,程序会按顺序尝试下载 #如果下载成功,会将文件保存到目标目录中,并进行哈希值校验 #如果哈希值不匹配,会删除下载的文件并报错 #如果已经存在相同文件名的文件且哈希值匹配,程序会直接退出 #如果哈希值匹配但文件名不同,程序会将下载的文件重命名为目标文件名
use strict; use warnings; use File::Basename; #用于获取文件名和目录名 use File::Copy; #用于复制和移动文件 use Text::ParseWords; #用于解析命令行参数
#检查是否指定了足够的参数
@ARGV > 2 or die "Syntax: $0
#获取目标目录、文件名、哈希值和下载链接等参数 my $url_filename; my $target = glob(shift @ARGV); my $filename = shift @ARGV; my $file_hash = shift @ARGV; $url_filename = shift @ARGV unless $ARGV[0] =~ /:///; my $scriptdir = dirname($0); my @mirrors; my $ok;
#判断是否需要检查证书 my $check_certificate = $ENV{DOWNLOAD_CHECK_CERTIFICATE} eq "y"; #获取自定义的下载工具 my $custom_tool = $ENV{DOWNLOAD_TOOL_CUSTOM}; #定义下载工具变量,后面会根据情况选择具体的工具 my $download_tool;
#判断哈希值类型,并生成相应的哈希命令 my $hash_cmd = hash_cmd(); $has
原文地址: https://www.cveoy.top/t/topic/cqTy 著作权归作者所有。请勿转载和采集!