2009-10-09 26 views
0

我正在使用Perl腳本修改.tar文件中的一些文件,並且生成的.tar文件中的目錄結構消失。 消除越來越多的代碼,只要所有的需要重現這個我來是當我使用Perl的Archive :: Tar時,爲什麼tarball目錄結構會消失?

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似乎沒問題。

以前見過或有過任何想法的你們中的任何人?

回答

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 

正如@〜嘎嘎便籤,docs state

注意的GNU tar早於1.14版本不應對以及POSIX標題前綴。如果您使用這樣的版本,請考慮將$Archive::Tar::DO_NOT_USE_PREFIX變量設置爲true

+4

來自POD(關於GNU tar版本):「請注意,早於版本1.14的GNU tar不支持POSIX標頭前綴 如果使用這樣的版本,請考慮設置$ Archive :: Tar :: DO_NOT_USE_PREFIX變量爲true。「 – 2009-10-09 15:48:02

+0

@〜嘎嘎:我真的不知道posix頭是什麼,所以我想我跳過了那部分。這正是我需要的! – Ledhund 2009-10-09 16:02:45

+0

@quack:我很驚訝你沒有給出答案,因爲它似乎是遇到的問題。 – Powerlord 2009-10-09 19:18:25

0

我試過你的腳本,但無法重現這個問題(在使用Perl 5.10的FreeBSD上)。

相關問題