2012-07-22 62 views
2

我試圖將CHOWN設置爲0,以便在以root身份提取時,文件不會被chown保存到存檔中保存的uid中。這似乎並不奏效。在perl歸檔中設置CHOWN爲0

use Archive::Tar; 
use Getopt::Long qw(:config pass_through); 

my $tarballName = $ARGV[0]; 
my $testfix = Archive::Tar->new(); 
    $testfix::CHOWN=0; 
$testfix->read ($tarballName); 

print "CHOWN=$testfix::CHOWN \n"; 

$testfix->extract() 

上面的代碼打印CHOWN = 0,但是當我添加打印「CHOWN = $ CHOWN \ n」;歸檔:: tar.pm並運行它我得到:

CHOWN=0 
CHOWN in tar.pm=1 

這是改變此設置的正確方法嗎?

回答

1

您應該設置$Archive::Tar::CHOWN而不是$testfix::CHOWN。此外,你聲明$testfix作爲一個對象,但後來用它作爲前綴 - 這兩個概念是完全不同的!

+0

我一直在試圖檔案::焦油:: CHOWN但與前:-(的$,這使所有的差異 – 2012-07-23 08:59:18

+0

@AntóinÓg:無印記不能使用變量名你應該。重新閱讀Perl的所有基本文檔,以更好地理解基本概念。 – choroba 2012-07-23 09:36:14

1

$testfix::CHOWNtestfix程序包中的$CHOWN變量,除了您的print語句外,其他任何內容都不會被查詢。

$Archive::Tar::CHOWN = 0; 
+0

這個答案也是正確的,兩者都是同時發佈的。所以我接受了最老的 – 2012-07-23 09:00:21