2009-02-24 52 views

回答

4

根据精细来源,Archive :: Tar :: File去除模式中的高位。 您可以尝试在你的脚本的开头以下魔法咒语(之前任何 可能引用档案::焦油),看看是否颠覆它:

use Archive::Tar::Constant(); 
BEGIN { 
    local $SIG{__WARN__} = sub{}; 
    *Archive::Tar::Constant::STRIP_MODE = sub(){ sub {shift} }; 
} 
... 
use Archive::Tar; 
... 

简要说明:STRIP_MODE是包含一个常数子程序可以通过原始模式并返回应该存储的模式。它通常被设定为

sub { shift() & 0777 } 

因为它是一个常数,从档案::焦油::进口恒进档案::焦油::文件和使用存在,无论它被设置为会内联到存档: :Tar :: File,因为它被编译。所以要改变它,常量必须在被内联之前被改变,也就是说,在Archive :: Tar :: File被加载之前。

N.B.因为改变可变常数容易出错(在发生影响后为时已晚),通常会产生严重的警告,通常无法禁用。

0

不知道,但在官方的tar命令,你需要通过-p要做到这一点

-1

你可能想看看Archive::Tar documentation的细节。从短暂的一瞥,似乎

$Archive::Tar::CHMOD = 1; 

应该做你想要什么,尽管文件称,上面的设置是默认的。 Archive :: Tar可能会剥离高位模式位,如粘性位。

存档是否都是使用Archive :: Tar创建和提取的,或者您是在一端还是另一端使用标准tar程序?

相关问题