0

Perlスクリプトを使用して.tar内のいくつかのファイルを変更すると、結果の.tar内のディレクトリ構造が消えます。これを再現するために必要なのは、私がやってきたコードをどんどん排除することです。

my $data_tar = Archive::Tar->new('data.tar');
$data_tar->write('modified_data.tar');

両方の.tarファイルにはすべてのファイルが含まれていますが、ファイルとサブディレクトリがどのディレクトリにあるかは示されません。

Archive :: Tarのドキュメントとsrcを調べましたが、何が起こっているのか本当にわかりません。

私はwin32、tar 1.12、Archive ::Tar1.54でperl5.10.0を使用しています。エディターで.tarファイルを調べたところ、data.tarにはdir/とdir/ file.txtが含まれていますが、modified_data.tarではdirとfile.txtとして表示されるため、元のtarは問題ないようです。

これを以前に見たことがある人、または何かアイデアがある人はいますか?

4

2 に答える 2

3
C:\Temp> perl -v

これは、MSWin32-x86-multi-thread 用にビルドされた v5.10.1 の perl です。
(2 つのパッチが登録されています。詳細については、perl -V を参照してください)
C:\Temp> perl -MArchive::Tar -e "print $Archive::Tar::VERSION"
1.52

次で作成されたものを使用して複製できませんdata.tar:

C:\Temp> tar --バージョン
タール (GNU タール) 1.21

@~quack が指摘しているように、ドキュメントには次のように記載されています

バージョン 1.14 より前の GNU tar は、POSIX ヘッダー接頭辞にうまく対処できないことに注意してください。このようなバージョンを使用する場合は、$Archive::Tar::DO_NOT_USE_PREFIX変数を に設定することを検討してtrueください。

于 2009-10-09T15:38:31.467 に答える
0

スクリプトを試しましたが、問題を再現できませんでした(Perl 5.10を使用するFreeBSDで)。

于 2009-10-09T15:29:55.807 に答える