2

我正在尝试将 CHOWN 设置为 0,这样当以 root 身份提取文件时,文件不会被保存在存档中的 uid 中。这似乎不起作用。

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,但是当我添加 print "CHOWN=$CHOWN \n"; 归档::tar.pm 并运行它我得到:

CHOWN=0 
CHOWN in tar.pm=1 

这是更改此设置的正确方法吗?

4

2 回答 2

1

你应该设置$Archive::Tar::CHOWN,而不是$testfix::CHOWN。此外,您声明$testfix为对象,但稍后将其用作前缀-这两个概念完全不同!

于 2012-07-22T22:08:19.733 回答
1

No. $testfix::CHOWN是包中的$CHOWN变量,testfix除了您的print声明之外,其他任何人都不会参考它。

$Archive::Tar::CHOWN = 0;
于 2012-07-22T22:08:41.840 回答