Linux perl UNAR文件

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)

我想让perl从我指定的文件夹中解压文件,然后删除稀有文件,这样它们就不会使用HDD空间。文件可以采用以下格式:(r(ar |[0-9][0-9])| sfv)

我已经安装了unrr,而且我是PERL新手,所以如果我需要在某处添加内容,请具体说明。比如在文件顶部添加这个,然后在那里添加这个

我现在的脚本如下所示:

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”(语言)和
    Perl
    解释器。与您的代码完全无关,但是cronologicaly第一条注释:)

  • 而且,据我所知,
    .sfv
    文件通常不是rar文件。它们包含的是压缩数据,而不是压缩数据

  • 所有代码都应以以下内容开头:

    use strict;
    use warnings;
    
    这让Perl告诉您可能正在编写的不安全/危险/糟糕的事情

  • 通常,只有在没有等效的内部Perl命令时,才应该使用``(系统调用)。在这种情况下:

    • find
      -使用Perl本机
      文件::find
      模块

    • rar
      command—虽然可能存在Perl本机rar模块(搜索CPAN以查找),但这是调用外部命令可能正常的极少数情况之一

      但是,您应该始终指定系统命令的完整路径(安全注意事项)

  • unlink()
    ——与任何其他IO/文件系统调用一样——应该在调用后进行错误检查:

     unlink($file) or die "Could not delete file $file: $!\n";
    

是否存在问题?如果rar文件存在问题,您还应检查rar提取中的错误