2016-04-20 19 views
0

我想提取一些文件使用存档::邮编。 一切工作正常。正在提取文件没有问题。这里是代码的PARTH:抑制错误:无法chmod()存档::邮编

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); 
} 

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

error: Can't chmod() /test/test.txt: Operation not permitted

我试图找到一种方法来抑制存档::邮编此消息,但无法找到任何方法来做到这一点。我无法更改服务器的权限。抑制这个信息的最好方法是什么?

谢谢 -Andrey

回答

0

档案,你的脚本尝试提取,与权限的一些问题,在创建文件test.txt。由于某些原因,这个权限不能在你的系统中进行chmod-ed,所以你得到了这个错误。

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

+0

感谢您的回复。我尝试了解决方案,它不起作用。打印语句打印666.它不会将其更改为644. – Andrey

+0

打印显示旧的权限值,因为** unixFileAttributes **在用于设置值时返回旧值。 – kjpires

+0

是警告“错误:不能chmod()/test/test.txt:操作不允许”为档案中的所有文件打印或仅打印一个?在这里显示''ls -la/test''命令的内容。做一个小档案,它会重复这个错误并且可以从某处下载。你使用哪个版本的Archive :: Zip? – raven428