抑制错误:不能在Archive :: Zip中使用chmod()

时间:2016-04-20 17:42:51

标签: perl zip archive

我正在尝试使用Archive :: Zip提取一些文件。 一切都很好。正在提取文件而没有任何问题。以下是代码的部分:

my $zip = Archive::Zip->new($file);
foreach my $member ($zip->members) {
    next if $member->isDirectory;
    (my $extractName = $member->fileName) =~ s{.*/}{};
    $member->extractToFileNamed($unixPath{'Rdrive'}.$extractName);
}

运行脚本时收到以下警告:

  

错误:无法chmod()/test/test.txt:不允许操作

我试图在Archive :: Zip中找到一种方法来抑制此消息,但无法找到任何方法来执行此操作。我无法更改服务器的权限。抑制此消息的最佳方法是什么?

谢谢你, -Andrey

2 个答案:

答案 0 :(得分:0)

您的脚本尝试提取的存档是在文件test.txt的权限问题上创建的。由于某些原因,您的系统无法对此权限进行修改,因此您收到此错误。

您可以在提取行$member->unixFileAttributes(0644);之前添加$member->extractToFileNamed()来修复此权限。您也可以尝试通过打印此权限来调查真正的原因:printf "%o - %s\n", $member->unixFileAttributes(0644), $member->fileName();

答案 1 :(得分:0)

$ member-> unixFileAttributes(0644); 似乎不起作用,因为文件是从网络驱动器上提取的。 我使用以下方法解决了这个问题:

Archive::Zip::setErrorHandler( \&zipErrorHandler );