我正在使用Perl脚本修改.tar中的某些文件,并且生成的.tar中的目录结构消失了。 消除越来越多的代码我已经到了重现这一点所需要的所有代码
my $data_tar = Archive::Tar->new('data.tar');
$data_tar->write('modified_data.tar');
两个.tar文件都包含所有文件,但是文件和子目录所在目录的指示都会丢失。
我查看了Archive::Tar的文档和src,但我真的不明白发生了什么。
我在win32上使用perl 5.10.0,tar 1.12和Archive :: Tar 1.54。 我在编辑器中检查了.tar文件,data.tar包含dir /和dir / file.txt,但是在modified_data.tar中它们显示为dir和file.txt,所以我的原始tar似乎没问题。
你们之前见过这个或有任何想法的人吗?
答案 0 :(得分:3)
C:\Temp> perl -v This is perl, v5.10.1 built for MSWin32-x86-multi-thread (with 2 registered patches, see perl -V for more detail)
C:\Temp> perl -MArchive::Tar -e "print $Archive::Tar::VERSION" 1.52
无法使用以下代码创建的data.tar
进行复制:
C:\Temp> tar --version tar (GNU tar) 1.21
正如@〜quack所说,docs state:
请注意,早于1.14版本的GNU tar无法很好地处理POSIX标头前缀。如果您使用此类版本,请考虑将
$Archive::Tar::DO_NOT_USE_PREFIX
变量设置为true
。
答案 1 :(得分:0)
我尝试过你的脚本,但无法重现问题(使用Perl 5.10在FreeBSD上)。