Tseng, Joe [CONTRACTOR] wrote:
> I have mostly figured out how to add files to a zip archive using
> Archive::Zip::addTreeMatching but I'm getting hung up on what seems to
> be a subtle point. I have a line that adds files to an archive
> directory if they're text or INI files:
>
> $objZip->addTreeMatching( $workingdir, 'config', "\.(ini|txt)");
>
> But the following line doesn't work for adding what is remaining to
> another archive directory :
>
> $objZip->addTreeMatching( $workingdir, 'results', "!\.(ini|txt)");
> I'm sure I'm overlooking something minor; assistance is always greatly
> appreciated!
Just adding a "!" onto the front of a regex doesn't negate it. It's not always
easy to write negative regexes, but addTree and addTreeMatching support an
optional variable at the end to do decision-making.
So you can actually use a !, but what you want to do is negate the result of a
regex, like so:
$objZip->addTree( $workingdir, 'results', sub { !/\.(ini|txt)$/ } );
There, the regex matches *.ini and *.txt, and then the ! (note that it's
outside of the regex) negates the match.
Also, I added a "$", because regexes are always faster when you give it a
position to start (or end) from.
--
Mike Gillis
Languages Development [EMAIL PROTECTED]
ActiveState Software http://www.activestate.com/languages
_______________________________________________
Perl-Win32-Users mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs