我试图通过以下方式设置tarball中包含的文件的文件权限:
print "Checking $tgz_file... ";
my $edited = 0;
my $tarball = Archive::Tar->new($tgz_file);
my @items = $tarball->get_files();
foreach (@items) {
if ($_->is_dir && $_->mode != 0755) {
$_->mode(0755);
$edited = 1;
} elsif ($_->is_file && $_->mode != 0644) {
$_->mode(0644);
$edited = 1;
}
}
if ($edited) {
$tarball->write($tgz_file, COMPRESS_GZIP);
print "edited!\n";
} else {
print "no changes.\n";
}
但是当
write()
“大”请求期间内存不足
对于268439552字节,total sbrk()为
313298944字节
/usr/lib/perl5/5.10/i686-cygwin/IO/Compress/Adapter/Deflate.pm第43行。
触发此错误的tarball是22MB(59MB未压缩),因此上面的数字有点令人担忧。我是不是在和一只虫子打交道
IO::Compress
? 在这种情况下有什么解决办法吗?我将Perl5.10.1用于i686-cygwin-thread-multi-64int。