Suppress error: Can't chmod() in Archive::Zip
Suppress error: Can't chmod() in Archive::Zip
我正在尝试使用 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);
}
我在 运行 脚本时收到以下警告:
error: Can't chmod() /test/test.txt: Operation not permitted
我试图在 Archive::Zip 中找到抑制此消息的方法,但找不到任何方法。我无法更改服务器的权限。抑制此消息的最佳方法是什么?
谢谢,
-安德烈
您的脚本尝试提取的存档在文件 test.txt
中创建时存在一些权限问题。由于某些原因,无法在您的系统中更改此权限,因此您收到此错误。
您可以通过在提取行 $member->extractToFileNamed()
之前添加 $member->unixFileAttributes(0644);
来修复此权限。您也可以尝试通过打印此权限来调查真正的原因:printf "%o - %s\n", $member->unixFileAttributes(0644), $member->fileName();
$member->unixFileAttributes(0644); 似乎不起作用,因为正在网络驱动器上提取文件。
我通过使用解决了这个问题:
Archive::Zip::setErrorHandler( \&zipErrorHandler );
我正在尝试使用 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);
}
我在 运行 脚本时收到以下警告:
error: Can't chmod() /test/test.txt: Operation not permitted
我试图在 Archive::Zip 中找到抑制此消息的方法,但找不到任何方法。我无法更改服务器的权限。抑制此消息的最佳方法是什么?
谢谢, -安德烈
您的脚本尝试提取的存档在文件 test.txt
中创建时存在一些权限问题。由于某些原因,无法在您的系统中更改此权限,因此您收到此错误。
您可以通过在提取行 $member->extractToFileNamed()
之前添加 $member->unixFileAttributes(0644);
来修复此权限。您也可以尝试通过打印此权限来调查真正的原因:printf "%o - %s\n", $member->unixFileAttributes(0644), $member->fileName();
$member->unixFileAttributes(0644); 似乎不起作用,因为正在网络驱动器上提取文件。 我通过使用解决了这个问题:
Archive::Zip::setErrorHandler( \&zipErrorHandler );