From: David Walker on
Hi

I am trying to create a tar archive on Windows XP with the Perl code below.
However, when I look at the archive created (using WinZip 10.0) all the
directory information is lost, and when I untar it using WinZip all I get is
all the files in the same directory. Can some kind person please tell me how
I can create the tar file so that when it is untar'd the directory
structure will be preserved.

Thanks
David

use Archive::Tar;
use IO::Zlib;
use File::Find;

$dir = "c:/docume~1/david/somedir";
$archive = "c:/docume~1/david/archive.tar";
$tar = Archive::Tar->new;

(@files);
find(\&wanted, $dir);
$tar->add_files(@files);
$tar->write($archive);

sub wanted{
push(@files,$File::Find::name);
}


From: Sisyphus on

"David Walker" <david(a)cs.cf.ac.uk> wrote in message
news:Gxuvh.18350$8j7.13192(a)newsfe1-win.ntli.net...
> Hi
>
> I am trying to create a tar archive on Windows XP with the Perl code
> below. However, when I look at the archive created (using WinZip 10.0) all
> the directory information is lost, and when I untar it using WinZip all I
> get is all the files in the same directory. Can some kind person please
> tell me how I can create the tar file so that when it is untar'd the
> directory structure will be preserved.
>

From the "FAQ" section in 'perldoc Archive::Tar' :

-- quote --
I'm using WinZip, or some other non-POSIX client, and files are not
being extracted properly!
By default, "Archive::Tar" is in a completely POSIX-compatible mode,
which uses the POSIX-specification of "tar" to store files. For
paths greather than 100 characters, this is done using the "POSIX
header prefix". Non-POSIX-compatible clients may not support this
part of the specification, and may only support the "GNU Extended
Header" functionality. To facilitate those clients, you can set the
$Archive::Tar::DO_NOT_USE_PREFIX variable to "true". See the "GLOBAL
VARIABLES" section for details on this variable.
-- end quote --

Hopefully, that deals with the problem you're facing. (If not, let us know -
and also tell us which version of Archive::Tar you have.).)

Cheers,
Rob


From: David Walker on
Rob

Yes that worked! I was using Tar 1.07, which didn't have the
DO_NOT_USE_PREFIX feature, so I've now installed Tar 1.30.

Thanks for your help.

David

"Sisyphus" <sisyphus1(a)nomail.afraid.com> wrote in message
news:45bec765$0$9776$afc38c87(a)news.optusnet.com.au...
>
> "David Walker" <david(a)cs.cf.ac.uk> wrote in message
> news:Gxuvh.18350$8j7.13192(a)newsfe1-win.ntli.net...
>> Hi
>>
>> I am trying to create a tar archive on Windows XP with the Perl code
>> below. However, when I look at the archive created (using WinZip 10.0)
>> all the directory information is lost, and when I untar it using WinZip
>> all I get is all the files in the same directory. Can some kind person
>> please tell me how I can create the tar file so that when it is untar'd
>> the directory structure will be preserved.
>>
>
> From the "FAQ" section in 'perldoc Archive::Tar' :
>
> -- quote --
> I'm using WinZip, or some other non-POSIX client, and files are not
> being extracted properly!
> By default, "Archive::Tar" is in a completely POSIX-compatible
> mode,
> which uses the POSIX-specification of "tar" to store files. For
> paths greather than 100 characters, this is done using the "POSIX
> header prefix". Non-POSIX-compatible clients may not support this
> part of the specification, and may only support the "GNU Extended
> Header" functionality. To facilitate those clients, you can set the
> $Archive::Tar::DO_NOT_USE_PREFIX variable to "true". See the
> "GLOBAL
> VARIABLES" section for details on this variable.
> -- end quote --
>
> Hopefully, that deals with the problem you're facing. (If not, let us
> know - and also tell us which version of Archive::Tar you have.).)
>
> Cheers,
> Rob
>