perl 如何将tar文件解压缩到目标目录?

t98cgbkg  于 2023-06-23  发布在  Perl
关注(0)|答案(1)|浏览(219)

我试图写一个脚本,它获取一个tar文件的路径,检查其中是否有一个txt文件,如果有,将文件提取到一个输出文件夹。

#!/usr/bin/perl
use strict;
use warnings;

use Archive::Tar;
use File::Spec::Functions qw(catdir);

#checking if tar file contain a txt file, if yes extract it to a folder

my $tarPath    = 'path/to/tarArchive';
my $tar        = Archive::Tar->new($tarPath);
my @files      = $tar->list_files;
my $output_dir = 'C:/output/path';
foreach my $file (@files) {
    if ( $file =~ /txt$/ ) {
        my $extracted_file = catdir( $fileName,   $file );
        my $extracted_path = catdir( $output_dir, $file );
        $tar->extract( $extracted_file, $output_dir );
        print $extracted_file;

    }
}
exit 0;

我得到一个错误:no such file in archive.
你能帮助我理解我做错了什么吗?正确的命令应该是什么?

jv4diomz

jv4diomz1#

Archive::Tarextract方法不允许指定输出目录;它只允许输入文件的列表。你需要使用extract_file方法:

$tar->extract_file($extracted_file, $output_dir);

相关问题