0

内部に巨大な XML を含む tar.gz ファイルがあります。perl で Archive::tar を使用してファイルを抽出する必要があります。tar から圧縮された XML ファイルのみを抽出する以下のコードを使用しています。 gzファイル..しかし、XMLも1つのステップで抽出する必要があります...以下のコードを使用しています...

 TAR__PATH= 'C:\\Perl\IN\Work\tar_file_20130426.xml.tar
 my $extract_obj = Archive::Extract->new(archive => $TAR_FILE_WORK_PATH, type => 'tar');
4

3 に答える 3

0

.xmlここに入れる場合は、tar.gzを使用した別の実装Archive::Extractです。ワンライナー形式で

perl -MArchive::Extract -e "Archive::Extract->new( archive => 'src/PPM-2.50_01.tar.gz' )->extract()"

ソース形式:

use Archive::Extract;

Archive::Extract->new( archive => 'src/PPM-2.50_01.tar.gz' )->extract();
于 2014-06-05T07:26:29.223 に答える
0

Archive::Tar がアーカイブ全体をメモリにロードするので、システム コール (完了するまでブロックして結果が得られるのでバックティック) を tar することをお勧めします。

の線に沿った何か

my $ret = `tar zxf $TAR_FILE_WORK_PATH`;

次に、$ret の成功を確認します。

-v (verbose) オプションを使用すると、さらに多くの出力を $ret にチェックインできます。

ほとんどの tar コマンドには、指定されたディレクトリに展開するための -C オプションがあり、これも便利です。

于 2013-04-30T12:03:54.850 に答える