#PSEUDO PERL CODE TO SEARCH THE FLAT TEXT FILE ($url, $suburl) = &parse_url; print "We are now searching our directory for a website or websites that best match $suburl.

"; print "

"; &lookup_redirections($FORM, key=>$suburl); sub parse_url { #THIS URL USES THE HTTP_HOST ENVIRONMENT STRING TO DETERMINE WHAT WE SHOULD SEARCH FOR my ($url, $suburl); if ($ENV{'HTTP_HOST'} ne "") { $url = ($ENV{'HTTP_HOST'}); $suburl = $url; $suburl =~ s/^www\.//ig; $suburl =~ s/\.kofc(va|-va)\.org//ig; $suburl =~ s/_/ /g; return ($url, $suburl); } else { &Library_kofc::print_error("Unknown Host Redirection Requested"); } } sub lookup_redirections { my ($FORM, %params) = @_; my ($command, $rv, $output, $key, @output, $i, $rowhash); $key = $params{'key'}; $key = &format_glimpse_search_string($FORM, string=>$key, phase=>1); # As of the Glimpse 4.17.3 Release from 1/25/03, this patch is now included # standard # OUTDATE INFO: THE USE OF -n and -B in AGREP is important and requires a patched version of AGREP until the patch becomes part of the # OUTDATE INFO: standard distribution. It's available at: # OUTDATE INFO: http://www.peregrinehw.com/downloads/agrep/agrep-4.15-KAM.tar.gz # NOTE: We use a nicer way to shell out and run agrep but the use of backticks is a simple way to demonstrate # AGREP COMMAND LINE USED # -B best match -n line numbers (unique IDs!) -i case insensitive # -y yes for the best match -k don't interpret anything in the search string $output = `/usr/local/bin/agrep -n -B -i -y -k \"$key\" /path/flat-text_search_file.txt`; @output = split(/\n/, $output); #PARSE EACH LINE OF OUTPUT for ($i=0; $i < ($#output + 1); $i++) { #GET THE UNIQUE ID $output[$i] =~ s/^(\d+):.*$/$1/; #GET THE INFO ON THIS ID FROM THE DATABASE $rowhash = &Library_kofc::get_directory_entry($FORM, council_id=>$output[$i]); #DO STUFF WITH THE INFO IN THE DATABASE. PRINT THE URL, PRINT A LINK, ETC . . . #END } } sub format_glimpse_search_string { my ($FORM, %params) = @_; #GLIMPSE HAS MANY MANY OPTIONS AND THIS IS A STUB IN CASE YOU NEED TO USE SOME OF THEM my ($string); $string = $params{'string'}; # WE LIMIT THE SEARCH TO 25 CHARS $string = substr($string,0,25); # WE ONLY ALLOW CERTAIN CHARS $string =~ s/[^\w()'\; -]//g; # IF PHASE 1 WE ONLY SEARCH FOR INDIVIDUAL WORDS AND NOT PHRASES if ($params{'phase'} == 1) { $string =~ s/ /\;/g; } return ($string); }