home *** CD-ROM | disk | FTP | other *** search
- #!/usr/bin/perl
- ##############################################################################
- # Simple Search Version 1.0 #
- # Copyright 1996 Matt Wright mattw@worldwidemart.com #
- # Created 12/16/95 Last Modified 12/16/95 #
- # Scripts Archive at: http://www.worldwidemart.com/scripts/ #
- ##############################################################################
- # COPYRIGHT NOTICE #
- # Copyright 1996 Matthew M. Wright All Rights Reserved. #
- # #
- # Simple Search may be used and modified free of charge by anyone so long as #
- # this copyright notice and the comments above remain intact. By using this #
- # code you agree to indemnify Matthew M. Wright from any liability that #
- # might arise from it's use. #
- # #
- # Selling the code for this program without prior written consent is #
- # expressly forbidden. In other words, please ask first before you try and #
- # make money off of my program. #
- # #
- # Obtain permission before redistributing this software over the Internet or #
- # in any other medium. In all cases copyright and header must remain intact.#
- ##############################################################################
- # Define Variables #
-
- $basedir = '/mnt/web/guide/worldwidemart/scripts/';
- $baseurl = 'http://worldwidemart.com/scripts/';
- @files = ('*.shtml','demos/links/*.html','demos/guest/*.html');
- $title = "Matt's Script Archive";
- $title_url = 'http://worldwidemart.com/scripts/';
- $search_url = 'http://worldwidemart.com/scripts/demos/search/search.html';
-
- # Done #
- ##############################################################################
-
- # Parse Form Search Information
- &parse_form;
-
- # Get Files To Search Through
- &get_files;
-
- # Search the files
- &search;
-
- # Print Results of Search
- &return_html;
-
-
- sub parse_form {
-
- # Get the input
- read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
-
- # Split the name-value pairs
- @pairs = split(/&/, $buffer);
-
- foreach $pair (@pairs) {
- ($name, $value) = split(/=/, $pair);
-
- $value =~ tr/+/ /;
- $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
-
- $FORM{$name} = $value;
- }
- }
-
- sub get_files {
-
- chdir($basedir);
- foreach $file (@files) {
- $ls = `ls $file`;
- @ls = split(/\s+/,$ls);
- foreach $temp_file (@ls) {
- if (-d $file) {
- $filename = "$file$temp_file";
- if (-T $filename) {
- push(@FILES,$filename);
- }
- }
- elsif (-T $temp_file) {
- push(@FILES,$temp_file);
- }
- }
- }
- }
-
- sub search {
-
- @terms = split(/\s+/, $FORM{'terms'});
-
- foreach $FILE (@FILES) {
-
- open(FILE,"$FILE");
- @LINES = <FILE>;
- close(FILE);
-
- $string = join(' ',@LINES);
- $string =~ s/\n//g;
- if ($FORM{'boolean'} eq 'AND') {
- foreach $term (@terms) {
- if ($FORM{'case'} eq 'Insensitive') {
- if (!($string =~ /$term/i)) {
- $include{$FILE} = 'no';
- last;
- }
- else {
- $include{$FILE} = 'yes';
- }
- }
- elsif ($FORM{'case'} eq 'Sensitive') {
- if (!($string =~ /$term/)) {
- $include{$FILE} = 'no';
- last;
- }
- else {
- $include{$FILE} = 'yes';
- }
- }
- }
- }
- elsif ($FORM{'boolean'} eq 'OR') {
- foreach $term (@terms) {
- if ($FORM{'case'} eq 'Insensitive') {
- if ($string =~ /$term/i) {
- $include{$FILE} = 'yes';
- last;
- }
- else {
- $include{$FILE} = 'no';
- }
- }
- elsif ($FORM{'case'} eq 'Sensitive') {
- if ($string =~ /$term/) {
- $include{$FILE} = 'yes';
- last;
- }
- else {
- $include{$FILE} = 'no';
- }
- }
- }
- }
- if ($string =~ /<title>(.*)<\/title>/i) {
- $titles{$FILE} = "$1";
- }
- else {
- $titles{$FILE} = "$FILE";
- }
- }
- }
-
- sub return_html {
- print "Content-type: text/html\n\n";
- print "<html>\n <head>\n <title>Results of Search</title>\n </head>\n";
- print "<body>\n <center>\n <h1>Results of Search in $title</h1>\n </center>\n";
-