#!/usr/bin/perl -- use strict; use warnings; use Archive::Zip; use XML::XPath; use autodie qw' chdir unlink '; Main( @ARGV ); exit( 0 ); sub Main { ( undef, my $zipfile ) = Archive::Zip::tempFile(); my $fillThisFile = "$zipfile-junk.xml"; { my $zip = Archive::Zip->new(); $zip->addString('c' x 300, 'bunchOfCs.txt'); $zip->addString(q~# #1~, 'test.xml'); $zip->writeToFileNamed( $zipfile ); } { my $zip = Archive::Zip->new( $zipfile ); my @xml = $zip->membersMatching( '.*\.xml' ); $zip->extractMember( $xml[0] , $fillThisFile ); my $xml = XML::XPath->new(filename => $fillThisFile); for my $node ( $xml->find('//a')->get_nodelist) { print $node->toString ,"\n"; } } unlink $zipfile, $fillThisFile; } __END__ # #1