916 Часть VIII. Примеры

h09161.jpg

#!/usr/bin/peri

# dbbooksearch.pi

use DB_File;

use Fcnti;

if ($ENV{'REQUEST_METHOD'}eq 'POST')(

read(STDIN, $buffer, $ENV('CONTENT_LENGTH'});

@pairs= split(/&/, $buffer);

foreach $pair (@pairs){

($name, $value)=split(/=/, $pair);

$value=~tr/+/ /; « $value=~s/%([a-fA-FO-9][a-fA-FO-9])/pack("C'hex($l))/eg;

$form{$name)=$value;

print "Content-type:text/html\n\n";

$file="addresses";

$database=tie(%db, 'DB_File', $file, 0_READ, 0660)[ic:ccc] ¦I die "can't";

print «"HTML";

<HTML>

<HEADXTITLE>Simple dbm address book results</TITLEX/HEAD>

<BODY>

<CENTER>

<H1>A Simple Address Book Results</Hl>

<TABLE BORDER=1>

HTML

Когда загружается каждая пара ключ-значение, ключ проверяется на соответствие запросу:

while ( ($key,$value)=each(%db)){ if ($key=~/$form('name'}/i){