The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -wT

use CGI qw/:standard/;
use CGI::Carp qw(fatalsToBrowser);
use WWW::Patent::Page;

# I would make this idiot-proof, but idiots are so damn clever.
use Archive::Zip;

if (param()) {    
	my $q = new CGI;
	binmode STDOUT;
	my $doc_id = param('doc_id');
	print $q->header(-status => "200 OK", -type => "application/zip", -attachment => "$doc_id.zip");
	my $agent = WWW::Patent::Page->new();

	#$agent->env_proxy();
	#$agent->proxy(['http', 'ftp'], 'http://somewhere.com:80/');
	$doc_id =~ s/[^A-Za-z0-9]//g;    # that which is not allowed is forbidden
	my $zip = $agent->get_page(
		$doc_id,
		'office' => 'JPO_IPDI',
		'format' => 'translation',
	);

	#	print 		#$response->content;
	$zip->writeToFileHandle(STDOUT, 0);    # 0 for not seekable
}

else {
	print header, start_html('JPO to English by IPDI'), h1('Japanese to English Patent Document Translation'), start_form,
		"Published at JPO? ", textfield('doc_id'), ' ',

		submit, end_form,
		"e.g. JPH09-123456A or JP2004012345A or JP2500002B or JP2006-004050A1 <br> see also http://www4.ipdl.inpit.go.jp/Tokujitu/tjsogodben.ipdl?N0000=115",
		p, '(Please be patient- translations and network latency take time.)', p, hr;
}