【问题标题】:Setting CHOWN to 0 in perl archive tar在 perl 归档 tar 中将 CHOWN 设置为 0
【发布时间】:2012-07-21 04:39:07
【问题描述】:

我正在尝试将 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 

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

【问题讨论】:

    标签: perl archive tar cpan


    【解决方案1】:

    没有。 $testfix::CHOWN 是 testfix 包中的 $CHOWN 变量,除了您的 print 语句之外,其他任何人都不会参考它。

    $Archive::Tar::CHOWN = 0;
    

    【讨论】:

    • 这个答案也对,都是同时进来的。所以我接受了最古老的
    【解决方案2】:

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

    【讨论】:

    • 我一直在尝试 Archive::Tar::CHOWN 但前面没有 $ :-(,这完全不同
    • @AntóinÓg:你不能使用没有印记的变量名。您可能应该重新阅读 Perl 的所有基本文档以更好地理解基本概念。
    猜你喜欢
    • 1970-01-01
    • 2010-10-05
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    • 1970-01-01
    相关资源
    最近更新 更多