Here is a better commented version of the Perl service program. The old comments were just for me.
#!C:\Perl\bin\perl #this program reads a string sent by the post method #and makes an xml file from it. This xml file is #displayed in HTML as a blog. $LengthOfArray=51; print "Content-type:text/html\n\n"; #read input string sent by post method $input =$ENV{'QUERY_STRING'}; #get rid of hex packing and other chars $input =~ s/%(..)/pack("c",hex($1))/eg; $input =~ tr|;|.|; $input =~ tr|'| |; $input =~ tr|"| |; #split the incoming string string ($name,$password, $comment, $select) = split(/&/,$input); #split data again at equal sign relationship ($dummey,$name) = split(/=/,$name); #replace a + with a space $name =~ tr|+| |; if(!$name) {$name ="no_data";} #security replace all control characters with a underbar $name =~ tr/\000-\047/_/; #split data again at equal sign relationship ($dummey,$comment) = split(/=/,$comment); #replace a + with a space $comment =~ tr|+| |; if(!$comment) {$comment ="no_data";} #security replace all control characters with a space $comment =~ tr/\000-\047/ /; #split data again at equal sign relationship ($dummey,$password) = split(/=/,$password); #replace a + with a space $name =~ tr|+| |; if(!$passowrd) {$passowrd ="no_data";} #security replace all control characters with a underbar $password =~ tr/\000-\047/_/; #split data again at equal sign relationship ($dummey,$select) = split(/=/,$select); #replace a + with a space $select =~ tr|+| |; if(!$select) {$select ="no_data";} #security replace all control characters with a underbar $select =~ tr/\000-\047/_/; # check to see if password entered if($password ne "Turners") {$name ="Blocked!"; $comment ="Comment blocked, Wrong Password!"; $select ="Blocked!";} # open the relational.txt file for input .......................................................... open(RELDATA, "<BlogRelData.txt"); flock(RELDATA, 2); @array = <RELDATA>; flock(RELDATA, 8); close (RELDATA); ($count, $xname, $xcomment, $date, $xselect)=split(/;/,$array[0]); #count test and reset if($count eq "") {$count ="0";} else {$count = $count+1;} if($count > 1000) {$count ="0";} # get the server time ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime(time); #convert hour and month to eastern standard time if($hour <= 5) { $hour=$hour+19; $mday=$mday-2; } else {$hour=$hour-5; $mday=$mday-1; } #compost the date variable $date = "Month-"."$mon"." Day-"."$mday"." Hour-"."$hour"; # compose a period delimited composite variable $data = "$count".";"."$name".";"."$comment".";"."$date".";"."$select"; #determine the array length $alength = @array; #limit the length of the array if($alength >= $LengthOfArray) {pop(@array);} #unshift new comosite array value into array unshift(@array, $data); #output the array to a text file----------------------------------------- if($count >= 0 && $count < 100000) { open(RESULT, ">BlogRelData.txt"); flock(RESULT, 2); foreach $array(@array) { $array =~ s/\n//g; print RESULT $array; print RESULT "\n"; } flock(RESULT, 8); close (RESULT); } #print array to an XML file____________________ #open the xml file for output.......................................................... open(XML, ">BlogData.xml"); flock(XML, 2); print XML "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n"; print XML "<Namefile>\n"; # xml output sequence........................... for( $i=0; $i < $alength; $i=$i+1 ) { $packet = $array[$i]; ($count, $xname, $xcomment, $xdate, $xselect)=split(/;/, $packet); if($xpages eq "") {$xpages ="no data";} #security replace all control characters with an underbar $xname =~ s/<(([^>]|\n)*)>/_/g; $xcomment =~ s/<(([^>]|\n)*)>/_/g; $xdate =~ s/<(([^>]|\n)*)>/_/g; $xselect =~ s/<(([^>]|\n)*)>/_/g; # xml output sequence........................... print XML "<cd>\n"; print XML "<visitor>"; print XML $count; print XML "</visitor>\n"; print XML "<date>"; print XML "$xdate"; print XML "</date>\n"; print XML "<name>"; print XML "$xname"; print XML "</name>\n"; print XML "<comment>"; print XML "$xcomment"; print XML "</comment>\n"; print XML "<select>"; print XML "$xselect"; print XML "</select>\n"; print XML "</cd>\n"; } print XML "</Namefile>"; flock(XML, 8); close (XML); #sleep for seconds sleep(1); # REDIRECT TO BACK TO THE HTML TABLE .............. print "<html>\n"; print "<script>\n"; print "window.location.replace(\"http://www.angelfire.com/scifi2/zpt/blog.html\")"; print "</script>\n"; print "</html>"; #END OF XML FILE