|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Timur Sabirzyanov 2:5080/197.197 26 Oct 2001 01:07:22 To : All Subject : у меня работает, а у провайдера нет :( -------------------------------------------------------------------------------- изобретаю вот велосипед систему поисковую, простенькую. данный скрипт например ищет в htmlках слова и складывает их в базу чтоб потом по ней можно было поиск делать. у меня локально под mysql 3.23.33, for Win95/Win98 (i32) и v5.6.1 built for MSWin32-x86-multi-thread все прекрасно отрабатывает, но у провайдера почему-то нет. таблица search_docs заполняется, а вот search_keys нет. где собака порылась? #!/usr/bin/perl use DBI; use locale; use POSIX qw(locale_h); setlocale(LC_CTYPE, "Russian_Russia.1251"); use strict; my $dbh; my $doc_id; my $l; my $key; my $fname; my $keyw; my $keym; my @docs; sub scandir { my $d; my $nd; opendir(DIR, $_[0]); foreach $d (sort { uc($a) cmp uc($b) } readdir(DIR)) { if (($d ne ".") && ($d ne "..")) { $nd = $_[0] . "/" . "$d"; if ( -d $nd ) { &scandir($nd); } else { $nd =~ s/\/\//\//g; push(@docs, $nd) if($nd =~ /.*\.html/ or $nd =~ /.*\.shtml/); } } } closedir(DIR); } &scandir('/home/html/'); $doc_id = 1; $dbh = DBI->connect("DBI:mysql:database=ostas;host=localhost","ostas","rhjdkz",{'RaiseE rror'=>1}) || die $dbh->errstr; $dbh->do("DELETE FROM search_keys") || die $dbh->errstr; $dbh->do("DELETE FROM search_docs") || die $dbh->errstr; foreach $fname (@docs) { my @words = (); my %hash = (); my $html = ""; open HTML, "<$fname" || die "Can't open $fname, $!"; $html = join('',<HTML>); close HTML; $html =~ s/<(?:[^>'"]*|(['"]).*?\1)*>/ /gs; $html =~ s/\n/ /g; $html =~ s/\t/ /g; $html =~ s/\r/ /g; $html =~ s/\&\w+\;/ /gis; $html =~ s/\W+/ /gis; $html =~ s/\s{2,}/ /g; @words = split(/ /,$html); foreach $keyw (@words) { $l = length($keyw); if($l>3 and $l<21) { $hash{$keyw} = '1'; } } $dbh->do("INSERT INTO search_docs(id,filename) VALUES(?,?)",undef,$doc_id,$fname) || die $dbh->errstr; foreach $keym ( keys %hash ) { $dbh->do("INSERT INTO search_keys(id,keyword) VALUES(?,?)",undef,$doc_id,$keym) || die $dbh->errstr; } $doc_id++; } $dbh->disconnect; print "Content-Type: text/html; charset=windows-1251\n\n"; print "<p>All right!</p>"; exit; WBR, Tim. ... Hогу свело - Чеpви --- эффералган 500 килограмм * Origin: mailto:youaskme@mail.ru (2:5080/197.197) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/47463bd86464.html, оценка из 5, голосов 10
|