我希望perl从我指定的文件夹中删除文件,删除rared文件后不要使用硬盘空间。文件格式可以是:(r(ar | [0-9] [0-9])| sfv)
我安装了unrar,而且我是PERL的新手,所以如果我需要在某个地方添加内容,请具体说明。就像在文件的顶部添加它一样。
我的脚本现在是这样的:
while (1)
{
foreach (`find ${upload_folder}`)
{
chomp;
if ($_ =~ /\.rar$/i)
{
$_=~/^([\W\w]+?)\/([^\/]+)$/;
`rar x "$_" "$1"`;
unlink($_);
}
#...
}
#...
}
由于
//哦是的,有时可以有一个文件夹,里面有rar文件的多个部分,名为.r01,.r02 .. .r50,所有这些部分实际上都是一个大的rar文件,分成很多部分
答案 0 :(得分:2)
我不确定你的问题是什么。
但是,如果你的目标是实际学习Perl(而不是做一个快速的黑客来做一个特定的功能,一旦你添加一些逻辑来做多个文件的rar,你的代码就足够了 - 抱歉,除非你展示你已经尝试过的东西,否则我不会从头开始为你写一篇文章,有几种方法可以改进你的代码:
首先,如果全部,它是“Perl”(语言)和perl
解释器。与您的代码完全无关,但cronologicaly第一条评论:)
此外,据我所知,.sfv
文件通常不是rar文件。它们包含checksums,而不是压缩数据。
您的所有代码都应该以:
开头use strict;
use warnings;
这让Perl告诉你可能正在写的不安全/危险/坏事。
当没有相同的内部Perl命令时,你应该只使用``(系统调用)。在这种情况下:
find
- 使用Perl原生File::Find
模块
rar
命令 - 虽然可能有Perl本机rar模块(搜索CPAN以查找),但这是少数几种调用外部命令可能正常的情况之一。
但是,您应该始终指定系统命令的完整路径(安全注意事项)
unlink()
- 与任何其他IO /文件系统调用一样 - 应该跟着错误检查:
unlink($file) or die "Could not delete file $file: $!\n";