Return to BSD News archive
Path: euryale.cc.adfa.oz.au!newshost.carno.net.au!harbinger.cc.monash.edu.au!munnari.OZ.AU!uunet!in3.uu.net!142.77.1.4!news.uunet.ca!not-for-mail From: "James Leutri" <james@club-webb.com> Newsgroups: comp.unix.bsd.freebsd.misc Subject: perl script help Date: Thu, 10 Apr 1997 15:35:33 -0400 Organization: Club-Webb Inc. Lines: 65 Message-ID: <5ijf34$b4r$1@nntp1.uunet.ca> NNTP-Posting-Host: main.club-webb.com X-Newsreader: Microsoft Outlook Express 4.71.0544.0 X-MimeOLE: Produced By Microsoft MimeOLE Engine V4.71.0544.0 Xref: euryale.cc.adfa.oz.au comp.unix.bsd.freebsd.misc:38876 If somone could explain why this script will not execute the command on line 5 it would be greatly appreciated. Or if there is something else wrong? :). --- perl script begins --- #!/usr/bin/perl print "Content-type: text/html\n\n"; &ReadParse; open(OUT, "| glimpse -l -y $in{'string'}"); @result = <OUT>; close(OUT); $count = 0; print "<html><head><title>Search Results for \"$in{'string'}\"</title></head >\n<body bgcolor=#ffffff><H1>Search Results</H1><BR>\n"; for($count =0; $count < @result; $count++) { print "Here it is: $result[$count]<BR>\n"; } print "\n</body></html>\n"; sub ReadParse { if (@_) { local (*in) = @_; } local ($i, $loc, $key, $val); # Read in text if ($ENV{'REQUEST_METHOD'} eq "GET") { $in = $ENV{'QUERY_STRING'}; } elsif ($ENV{'REQUEST_METHOD'} eq "POST") { for ($i = 0; $i < $ENV{'CONTENT_LENGTH'}; $i++) { $in .= getc; } } @in = split(/&/,$in); foreach $i (0 .. $#in) { # Convert plus's to spaces $in[$i] =~ s/\+/ /g; # Convert %XX from hex numbers to alphanumeric $in[$i] =~ s/%(..)/pack("c",hex($1))/ge; # Split into key and value. $loc = index($in[$i],"="); $key = substr($in[$i],0,$loc); $val = substr($in[$i],$loc+1); $in{$key} .= '\0' if (defined($in{$key})); # \0 is the multiple separator $in{$key} .= $val; } return 1; # just for fun }