#!/usr/bin/perl -wT # -*- Mode: perl; tab-width: 4; indent-tabs-mode: nil; -*- # # multiform-01: Multiple forms demo 01 # # Copyright (c) 2004 by Ian Hickson # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA use strict; use utf8; use CGI; my $query = new CGI; my $name = $query->param('name'); my $address = $query->param('address'); my $postcode = $query->param('postcode'); my $product = $query->param('product'); my $productcode = $query->param('productcode'); if ($query->param('lookup-postcode')) { if (defined $postcode and length $postcode) { if ($postcode eq 'TEST') { $address = '1, Test Address'; } } elsif (defined $address and length $address) { if ($address =~ m/Test Address/osi) { $postcode = 'TEST'; } } reprintForm($name, $address, $postcode, $product, $productcode); } elsif ($query->param('lookup-product')) { if (defined $productcode and length $productcode) { if ($productcode eq '1') { $product = 'The Test Product'; } } elsif (defined $product and length $product) { if ($product =~ m/Test/osi) { $productcode = '1'; } } reprintForm($name, $address, $postcode, $product, $productcode); } else { foreach ($name, $address, $postcode, $product, $productcode) { $_ = 'unknown' unless defined $_ and length $_; s/&/&/os; s//>/os; } print < Multiple Forms Demo 01: Results

Product "$product" (code $productcode) will be sent to:

$name
$address
$postcode
EOF } sub reprintForm { my($name, $address, $postcode, $product, $productcode) = @_; foreach ($name, $address, $postcode, $product, $productcode) { $_ = '' unless defined $_; s/&/&/os; s//>/os; } print "Content-Type: text/html\n\n"; open(FILE, '<', 'index') or die "couldn't open index: $!"; while (defined($_ = )) { s/name="name"/name="name" value="$name"/gos; s/name="address"/name="address" value="$address"/gos; s/name="postcode"/name="postcode" value="$postcode"/gos; s/name="product"/name="product" value="$product"/gos; s/name="productcode"/name="productcode" value="$productcode"/gos; print; } close(FILE); }