Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations strongm on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Search problem

Status
Not open for further replies.

Rowina

Technical User
Aug 5, 2002
4
HK
Hi everyone,

I'm currently using Matt's search.pl. It works fine with my own website. But now I would like to use it on a SQL window NT server. Unfortunatelly it doesn't work. It says my $basedir path is NOT correct. I'm following the guidelines from the scripts and I had no problem with it on my own website. If my files are stored in a 'cgi-bin' and the serverhost name is '10.10.13.103:101'. Is it correct to put $basedir = '/10.10.13.103:101/cgi-bin/'; ?? If not, what is the correct method? Can anyone please help me?

THANK YOU VERY MUCH
The script is listed below.

Rowina


#!/usr/bin/perl
use CGI::Carp qw(fatalsToBrowser);

# base directory where user would like to search from
$basedir = /10.10.13.103:101/cgi-bin/ONE';

$baseurl = '@files = ('*.html');
$title = "DatabaseSearch ONE";
$title_url = '$search_url = '&parse_form;
&get_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} = &quot;$1&quot;;
}
else
{
$titles{$FILE} = &quot;$FILE&quot;;
}
}
}

# return the output page
sub return_html
{
print &quot;Content-type: text/html\n\n&quot;;
print &quot;<html>\n <head>\n <title>Search Results</title>\n </head>\n&quot;;
print &quot;<body>\n <center>\n <h1>Results of Search in $title</h1>\n </center>\n&quot;;
print &quot;Search Results:<p>
<hr size=7 width=75%><p>\n&quot;;
print &quot;<ul>\n&quot;;
foreach $key (keys %include)
{
if ($include{$key} eq 'yes')
{
print &quot;<li><a href=\&quot;$baseurl$key\&quot;>$titles{$key}</a>\n&quot;;
}
}
print &quot;</ul>\n&quot;;
print &quot;<hr size=7 width=75%>\n&quot;;
print &quot;Search Information:<p>\n&quot;;
print &quot;<ul>\n&quot;;
print &quot;<li><b>Terms:</b> &quot;;
$i = 0;
foreach $term (@terms)
{
print &quot;$term&quot;;
$i++;
if (!($i == @terms))
{
print &quot;, &quot;;
}
}
print &quot;\n&quot;;
print &quot;</ul><br><hr size=7 width=75%><P>\n&quot;;
print &quot;<li><a href=\&quot;$title_url\&quot;>Back to User Login</a>\n&quot;;
print &quot;</ul>\n&quot;;
print &quot;</body>\n</html>\n&quot;;
}
 
Your missing a beginning tick here:


#base directory where user would like to search from
$basedir = /10.10.13.103:101/cgi-bin/ONE';

should be:
#base directory where user would like to search from
$basedir = '/10.10.13.103:101/cgi-bin/ONE'; =================
Bad Company Music
=================
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top