#! /usr/bin/perl print "Content-type: text/html\n\n"; if ($ENV{"REQUEST_METHOD"} eq "POST") { read(STDIN, $datastring, $ENV{"CONTENT_LENGTH"}); } elsif (exists $ENV{"REQUEST_METHOD"}) {# data from GET transaction (or HEAD or other) $datastring = $ENV{"QUERY_STRING"}; } else { print "Offline execution detected\n"; print "Please enter some data.\n"; $datastring = <>; chomp $datastring; print "== data accepted == HTML output follows ==\n\n"; } ###decode###################################################### @nameValuePairs = split(/&/, $datastring);#step 1. foreach $pair (@nameValuePairs) { ($name, $value) = split(/=/, $pair); #step 2. $name =~tr/+/ /; #step 3. $name =~s/%([\da-fA-F]{2})/pack("C",hex($1))/eg; #step 3. $value =~tr/+/ /; #step 3. $value =~s/%([\da-fA-F]{2})/pack("C",hex($1))/eg;#step 3. $value =~s/[<>]//g; #precaution $formHash{$name}=$value; #step 4. } ###done decoding############################################### $cheesetotal = sprintf "%.2f", $formHash{"cheeseburger"}*1.50; $veggietotal = sprintf "%.2f", $formHash{"veggieburger"}*1.50; $friestotal = sprintf "%.2f", $formHash{"fries"}*1.00; $drinktotal = sprintf "%.2f", $formHash{"drink"}*0.80; $totalCost = sprintf "%.2f", $cheesetotal+$veggietotal+$friestotal+$drinktotal; print <<WHOLEPAGE; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1"/> <title>Thank you for your order</title> </head> <body> <table border="1"> <tr> <th>Food</th><th>Quantity</th><th>Subtotal</th> </tr> <tr> <td>Cheeseburger (\$1.50)</td> <td align="right">$formHash{"cheeseburger"}</td> <td align="right">\$$cheesetotal</td> </tr> <tr> <td>Veggieburger (\$1.50)</td> <td align="right">$formHash{"veggieburger"}</td> <td align="right">\$$veggietotal</td> </tr> <tr> <td>Fries (\$1.00)</td> <td align="right">$formHash{"fries"}</td> <td align="right">\$$friestotal</td> </tr> <tr> <td>Drink (\$0.80)</td> <td align="right">$formHash{"drink"}</td> <td align="right">\$$drinktotal</td> </tr> <tr> <td colspan="2"><b>TOTAL</b></td><td align="right">\$$totalCost</td> </tr> </table> </body> </html> WHOLEPAGE