#!/usr/bin/perl package idx; use strict; my $DDIR = './data'; my %TPL; print "Content-type: text/html\n\n"; eval { require "$DDIR/vars.dat"; require "templates/_index_cgi.htmlt"; main(); }; err("$@", 'index.cgi') if( $@ ); exit; sub main { print $HTML::HEAD; open(DATA, "$DDIR/dbs/search") || err($!, '$DDIR/dbs/search'); while( ) { my @md = split(/\|/, $_); $TPL{'TITLE'} = $md[1]; $TPL{'URL'} = $OPT::OUT ? "$VAR::OU?id=$md[0]&url=" . urlencode($md[3]) : $md[3]; vparse($HTML::TEMP); } close(DATA); print $HTML::FOOT; } sub fsplit { my($file) = shift; open(FILE, "$file") || err($!, $file); my @data = split(/\|/, ); close(FILE); return \@data; } sub getmem { my $id = shift; $id =~ s/\..+$//; return $id; } sub urlencode { my $url = shift; $url =~ s/([^\w\.\-])/sprintf("%s%x", '%', ord($1))/eg; return $url; } sub dread { my($dir, $patt) = @_; opendir(DIR, $dir) || err($!, $dir); my @files = grep { /$patt/ } sort readdir(DIR); closedir(DIR); return \@files; } sub vparse { my($html, $fh) = @_; $fh = *STDOUT if(!$fh); $html =~ s/#%(.*?)%#/$TPL{$1}/gise; print $fh $html; } sub err { my($cause, $file) = @_; my @from = caller(1); chomp($cause); print "
\n";
  print "A CGI ERROR HAS OCCURRED\n========================\n";
  print "Error Message     :  $cause\n";   
  print "Accessing File    :  $file\n";
  print "Calling Function  :  $from[3] from $from[1]" if( $from[3] ne "" );
  exit;
}