Dan Muey wrote:
> > Dan Muey wrote:
> > > I'm looking at Archive::Zip to extract a single text file
> > from a zip
> > > file that is ftped from a winders box to a unix box.
> > >
> > > The zip file conatins only one file, a .txt file, that is
> > compressed
> > > pretty well. (about 170 MB regular 18MB zipped up)
> > >
> > > Data.txt is apx 170MB
> > > Data.txt is zipped into 'data.zip' which is 18MB
> > > File 'data.zip' is ftped from winders to unix server
> > > Now heres' where my perl script comes in:
> > >
> > > Perl/Archive::Zip (or other module???)
> > > Extracts data.txt from data.zip and writes it to 'local_data.txt'
> > >
> > > Any pointers/ideas/experience about how to do that?
> >
> > Hi Dan.
> >
> > The program below is the very basic stuff to do what you
> > want. It does no error checking except to make sure that the
> > zip file opened OK, and just extracts the first file in the
> > archive with to a file with a name prefixed with "local_".
> > You probably need some exception handling, but how much
> > depends on your data.
> >
> > HTH,
> >
> > Rob
> >
> >
> >   use strict;
> >   use warnings;
> >
> >   use Archive::Zip;
> >
> >   my $zip = Archive::Zip->new('data.zip') or die "Failed to
> > open zip file";
> >
> >   my ($member) = $zip->members;
>
> For grins, if I understand this right this would allow me to extract a couple files 
> based ontheir name:
>
> my $zip = Archive::Zip->new('data.zip') or die "Failed to open zip file";
>
> my @members = $zip->members;
>
> for(@members) {
> if($_->fileName =~ 'super.txt') { $_->extractToFileNamed("local_super.txt");
> if($_->fileName =~ 'two.txt') { $_->extractToFileNamed("local_two.txt");
> }
>
> Just curiose if my understanding of this obdject is semi correct.
>

Yes, but you don't usually put single quotes around a regex, and what you
wrote would match file names like xxxsuperxtxtxxx. What you mean is

  if ($_->fileName eq 'super.txt') { $_->extractToFileNamed('local_super.txt');

but you can do all sorts of fun stuff like

  my @members = $zip->membersMatching('^(super|two)\.txt$');

If you have Archive::Zip installed then

  perldoc Archive::Zip

will tell you all about it.

Cheers,

Rob



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to