sub exportdatabase { #INCOMING GLOBAL VARS: $statement, $db_export_file, # $cur_date, $cur_time, $OS, $table, $quest fork: { my ($recnum,$revnum,$book,$chap,$verse,$text) = ''; my @resp = (); my $encoding = "UTF-8"; my $zipdata = ''; my $CRLF = "\n"; my $zipfile = "$db_export_file.zip"; my $q = CGI::Simple->new(); my $z = IO::Compress::Zip->new(\$zipdata, Name => "$db_export_file" ) or die "zip failed: $ZipError\n"; if ($OS eq "Windows") { $CRLF = "\r\n"; } $statement = qq| SELECT a.RecordNum, a.RevisionNum, a.Book, a.Chapter, a.Verse, a.Text from $table a INNER JOIN (SELECT RecordNum, max(RevisionNum) RevisionNum FROM $table GROUP BY RecordNum) b USING (RecordNum,RevisionNum); |; &connectdb('exportdatabase'); $z->print( encode( $encoding, "RECORD#\tREVISION#\tBOOK#\tCHAP#\tVERSE#\tTEXT, AS EDITED BY: $curdate $curtime (Pacific Time), EXPORTED IN $OS FORMAT$CRLF", Encode::FB_CROAK|Encode::LEAVE_SRC ) ); while ( ( $recnum, $revnum, $book, $chap, $verse, $text ) = $quest->fetchrow_array() ) { $z->print( encode( $encoding, "$recnum\t$revnum\t$book\t$chap\t$verse\t$text$CRLF", Encode::FB_CROAK|Encode::LEAVE_SRC ) ); } $z->close(); print $q->header( -type => 'application/zip', -Content_Disposition => qq{attachment; filename="$zipfile"}, -Content_Length => length($zipdata) ); binmode STDOUT; # just to play it safe print $zipdata; } # END fork } # END SUB exportdatabase