Perl Untar один файл

Так что, столкнувшись с проблемой с моим кодом, я не уверен, что именно я делаю неправильно, я передаю ему два аргумента, которые он ищет для файла, но он всегда собирается не существовать.

я передаю это в файл

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 ответа

Решение

Просто пишу комментарий Scott Hunter как ответ:

Попробуйте использовать абсолютный путь вместо относительного.

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])
Напишите запись, имя которой эквивалентно имени файла, предоставленного на диск. При желании принимает второй параметр, который является полным собственным путем (включая имя файла), в который будет записана запись.

Другие вопросы по тегам