首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >perl unrar文件

perl unrar文件
EN

Stack Overflow用户
提问于 2011-10-10 23:19:24
回答 1查看 1K关注 0票数 1

我希望perl能够从我指定的文件夹中解压缩文件,并在删除rared文件之后,这样它们就不会使用HDD空间了。文件可以采用这种格式:(r(ar=0-9)\sfv)

我已经安装了unrar,我是PERL的新手,所以如果我需要在某个地方添加什么东西,请具体一点。比如把这个添加到文件的顶部,然后放在那里。

我现在的剧本是这样的:

代码语言:javascript
复制
while (1)
{
  foreach (`find ${upload_folder}`)
  {
    chomp;
    if ($_ =~ /\.rar$/i)
      {
        $_=~/^([\W\w]+?)\/([^\/]+)$/;
        `rar x "$_" "$1"`;
        unlink($_);
      }
#...
}
#...
}

谢谢

//噢,是的,有时还可以有一个包含rar文件多个部分的文件夹,名为.r01,.r02。.r50和所有这些部分实际上是一个大的rar文件,分成很多部分。

EN

回答 1

Stack Overflow用户

发布于 2011-10-11 02:41:55

我不知道你的问题是什么。

但是,如果您的目标是真正学习Perl (而不是快速执行‘n’脏的攻击来执行特定的函数,那么一旦您添加了一些逻辑来执行多个文件的rar操作,那么您的代码就足够了--对不起,除非您展示您已经尝试过的内容,否则我不会从零开始为您编写一个Perl),有几种方法可以改进您的代码:

  • 首先,它是"Perl“(语言)和perl解释器。与您的代码完全无关,但第一个注释是:)
  • 而且,据我所知,.sfv文件通常不是rar文件。它们包含校验和,而不是压缩数据。
  • 您的所有代码都应该从以下代码开始: 严格使用;使用警告; 这可以让Perl告诉您您可能正在编写的不安全/危险/不好的东西。
  • 通常,只有在没有对应的内部Perl逗号时才应该使用 (系统调用)。在这种情况下:

但是,

代码语言:javascript
复制
- `find` - use Perl native `File::Find` module
- `rar` command - while there may be Perl native rar module (search CPAN to find out), this is one of the rare situations where calling external command may be OK.

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

  • 与任何其他IO/文件系统调用一样,unlink()之后应该进行错误检查: 取消链接($file)或死“无法删除文件$file:$!\n";
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7719740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档