perl解压单个文件

时间:2015-07-16 16:16:58

标签: linux perl archive-tar

所以遇到我的代码问题,不知道我究竟做错了什么我传递了它搜索文件的两个参数,但它总是不存在。

我把它传递给文件

perl restore.cgi users_old_52715.tar.gz Ace_Walker

它没有找到它确实存在的文件。

#!/usr/bin/perl
use Archive::Tar;

my $tarPath    = $ARGV[0];
my $playerfile = $ARGV[1].".ini";



my $tar = Archive::Tar->new($tarPath);
if ($tar->contains_file($playerfile)) {
    $tar->read($tarPath);
    $tar->extract_file($playerfile, './' );
    print "Successfully restored $playerfile to production enviroment\n";
    exit 0;
}else{
    print $playefile." does not exist in this archive!\n";
    exit 0;
}

2 个答案:

答案 0 :(得分:0)

只需撰写Scott Huntercomment作为答案:

  

尝试使用绝对路径而不是相对路径。

答案 1 :(得分:0)

if( $tar->extract_file($playerfile, './'.$playerfile )){ 
  print "Successfully restored $playerfile to production enviroment\n";
}
exit 0;

man Archive::Tar

  

$ tar-> extract_file($ file,[$ extract_path])
         写一个条目,其名称相当于提供给磁盘的文件名。可选择使用第二个参数,即该条目将被写入的完整本机路径(包括文件名)。