#!/usr/bin/perl -w use strict; use File::Find; use CGI qw(:standard); my $query = param("query"); my $filepath = '/www1/deftone.com/html/blogzilla/archives'; # Strip whitespace from query $query =~ s/^\s+//; $query =~ s/\s+$//; print header(); print "\n"; print "\n"; print "Blogzilla: search results\n"; print "\n"; print "\n"; print "\n"; print "
\n"; print "
\n"; print "

\"blogzilla\"

\n"; print "

Directory

\n"; print "· Home
\n"; print "· About
\n"; print "· Archives
\n"; print "· Contact
\n"; print "
\n"; print "
\n"; print "


\n"; print "

Search Results

\n"; print "\n

For the query '$query', these results were found:

\n
    \n"; undef $/; find( sub { return if($_ =~ /^\./); # parse out files that start with a '.' return if($_ =~ /^\index.html/); # parse out archives index.html return if($_ =~ /^200/); # parse out monthly archives return unless($_ =~ /\.html/i); # get only .html files stat $File::Find::name; return if -d; return unless -r; open(FILE, "< $File::Find::name") or return; my $string = ; close (FILE); return unless ($string =~ /\Q$query\E/i); my $page_title = $_; # get page title for result if ($string =~ /Blogzilla - a blog about Mozilla: (.*?)<\/title>/is) { $page_title = $1; } # getting proper link for filename because alistapart example didn't work properly my $filename = $File::Find::name; my $extract_filename = $_; if ($filename =~ /\$filepath(.*?)/is) { $extract_filename = $1; } print "<li><a href=\"/blogzilla/archives/$extract_filename\">$page_title</a></li>\n"; }, $filepath); print "</ol>\n"; print "<h2>Search</h2>\n"; print "<form action=\"/cgi-bin/search.cgi\" method=\"post\">\n"; print "<input type=\"text\" name=\"query\" size=\"15\" class=\"inputbox\" /><br /><br />\n"; print "<input type=\"submit\" class=\"button\" value=\"Search\" />\n"; print "</form>\n"; print end_html();