Linux perl UNAR文件
我想让perl从我指定的文件夹中解压文件,然后删除稀有文件,这样它们就不会使用HDD空间。文件可以采用以下格式:(r(ar |[0-9][0-9])| sfv) 我已经安装了unrr,而且我是PERL新手,所以如果我需要在某处添加内容,请具体说明。比如在文件顶部添加这个,然后在那里添加这个 我现在的脚本如下所示:Linux perl UNAR文件,linux,perl,unrar,Linux,Perl,Unrar,我想让perl从我指定的文件夹中解压文件,然后删除稀有文件,这样它们就不会使用HDD空间。文件可以采用以下格式:(r(ar |[0-9][0-9])| sfv) 我已经安装了unrr,而且我是PERL新手,所以如果我需要在某处添加内容,请具体说明。比如在文件顶部添加这个,然后在那里添加这个 我现在的脚本如下所示: while (1) { foreach (`find ${upload_folder}`) { chomp; if ($_ =~ /\.rar$/i)
while (1)
{
foreach (`find ${upload_folder}`)
{
chomp;
if ($_ =~ /\.rar$/i)
{
$_=~/^([\W\w]+?)\/([^\/]+)$/;
`rar x "$_" "$1"`;
unlink($_);
}
#...
}
#...
}
谢谢
//哦,是的,有时会有一个包含rar文件多个部分的文件夹,名为.r01、.r02。r50和所有这些部分实际上是一个大的rar文件,分为许多部分我不确定你的问题是什么 但是,如果您的目标是实际学习Perl(而不是快速地“n”dirty hack来完成一个特定的函数,一旦您添加了一些逻辑来执行多个文件的rar,您的代码就足够了——对不起,除非您展示了您已经尝试过的内容,否则我不会费心从头开始为您编写一个了),有几种方法可以改进代码:
- 首先,它是“Perl”(语言)和
解释器。与您的代码完全无关,但是cronologicaly第一条注释:)Perl
- 而且,据我所知,
文件通常不是rar文件。它们包含的是压缩数据,而不是压缩数据.sfv
- 所有代码都应以以下内容开头:
这让Perl告诉您可能正在编写的不安全/危险/糟糕的事情use strict; use warnings;
- 通常,只有在没有等效的内部Perl命令时,才应该使用``(系统调用)。在这种情况下:
-使用Perl本机find
模块文件::find
command—虽然可能存在Perl本机rar模块(搜索CPAN以查找),但这是调用外部命令可能正常的极少数情况之一 但是,您应该始终指定系统命令的完整路径(安全注意事项)rar
——与任何其他IO/文件系统调用一样——应该在调用后进行错误检查:unlink()
unlink($file) or die "Could not delete file $file: $!\n";