2

CHOWN を 0 に設定して、ルートとして抽出されたときにファイルがアーカイブに保存された uid に chown されないようにしようとしています。これはうまくいかないようです。

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"; を追加すると、archive::tar.pm して実行すると、次のようになります。

CHOWN=0 
CHOWN in tar.pm=1 

これは、この設定を変更する正しい方法ですか?

4

2 に答える 2

1

$Archive::Tar::CHOWNではなく、を設定する必要があり$testfix::CHOWNます。$testfixさらに、オブジェクトとして宣言しますが、後でプレフィックスとして使用します。これら 2 つの概念はまったく異なります。

于 2012-07-22T22:08:19.733 に答える
1

No. $testfix::CHOWNはパッケージ内の$CHOWN変数であり、ステートメントtestfix以外には参照されません。print

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