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::Tar 1.54 上使用 perl 5.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 构建的 perl v5.10.1
(带有 2 个已注册的补丁,请参阅 perl -V 了解更多详细信息)
C:\Temp> perl -MArchive::Tar -e "打印 $Archive::Tar::VERSION"
1.52

无法使用data.tarcreated with 复制:

C:\Temp> 焦油--版本
焦油 (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 回答