我有一个类似wget的脚本,它下载一个页面,然后检索该页面上IMG标签中链接的所有文件.
给定原始页面的URL和从该页面中的IMG标记中提取的链接,我需要构建我想要检索的图像文件的URL.目前我使用的是我写的函数:
sub build_url {
my ( $base, $path ) = @_;
# if the path is absolute just prepend the domain to it
if ($path =~ /^\//) {
($base) = $base =~ /^(?:http:\/\/)?(\w+(?:\.\w+)+)/;
return "$base$path";
}
my @base = split '/', $base;
my @path = split '/', $path;
# remove a trailing filename
pop @base if $base =~ /[[:alnum:]]+\/[\w\d]+\.[\w]+$/;
# check for relative paths
my $relcount = $path =~ /(\.\.\/)/g;
while ( $relcount-- ) {
pop @base;
shift @path;
}
return join '/', @base, @path;
}
Run Code Online (Sandbox Code Playgroud)
问题是,我肯定不是第一个解决这个问题的人,实际上这是一个普遍的问题,我认为必须有一些更好,更标准的处理方式,使用核心模块或CPAN的东西 - 尽管通过核心模块是可取的.我在想,File::Spec但不确定它是否具备我需要的所有功能.