Forenindex » Archiv » Perl und CGI » startdir Suche in mehreren Ordnern

startdir Suche in mehreren Ordnern

Schomo
Beiträge gesamt: 96

3. Mai 2002, 15:26
Bewertung:

gelesen: 2244

Beitrag als Lesezeichen
Hallo,
ich habe eine Site auf der ich eine Suchmaschine laufen lasse. Nun hab ich das Problem, dass ich die Ordner der site nicht verändern darf. Nun sucht meine kleine Suchmaschine vom cgi-bin Ordner aus mit $startdir='../';Blöderweise sucht die Suchmaschine aber auch im cgi-bin Ordner, was sie nicht soll, da dort die ganzen Templates liegen.
Wie kann ich Perl sagen, dass die Suchmaschine in mehreren Ordnern suchen soll? Vielleicht ne blöde Frage, aber ich bin Perl Neuling.

Gruss Schomo

[ Diese Nachricht wurde geändert von: Schomo am 2002-05-03 15:28 ]

startdir Suche in mehreren Ordnern

SabineP
Beiträge gesamt: 7586

3. Mai 2002, 16:45
Bewertung:

gelesen: 2244

Beitrag als Lesezeichen
Das kann man aus der Ferne schlecht sagen, ohne die Suchmaschine zu kennen.
opendir, readdir und closedir sind Funktionen,
um Verzeichnisinhalte zu lesen.
Dann kann man noch die zu suchenden Dateien nach der Datei-Endung unterscheiden.
Das ist aber nur eine von vielen Möglichkeiten.

startdir Suche in mehreren Ordnern

Schomo
Beiträge gesamt: 96

3. Mai 2002, 23:03
Bewertung:

gelesen: 2244

Beitrag als Lesezeichen
Hi,
ich hab das Script mal schnell online gestellt.
http://www.testort.de/perl.htm

Gruss Schomo

startdir Suche in mehreren Ordnern

SabineP
Beiträge gesamt: 7586

4. Mai 2002, 10:37
Bewertung:

gelesen: 2244

Beitrag als Lesezeichen
Wenn Du die Subroutine "sub suchen" durch diesen Code ersetzt, dann sucht Dein Script in allen Verzeichnissen außer in den Verzeichnissen in denen die Zeichenkette "cgi" vorkommt.

Code:

sub suchen{
my $file=$_;
my $dir=$File::Find::dir;
return if($dir =~ /cgi/i);
$i=0;
return unless -f $file;
return unless -T $file;
return unless $file=~/.+\.((s)?htm(l)?|txt)$/;
open(FILE,"<$file");
while(<FILE>){
$zeile=$_;
$head=1 if($zeile=~/\<head/);
$head=0 if($zeile=~/\<\/head/ || $zeile=~/\<body/);
$zeile=~s/(\<[^\>\<]*\>)//g;
$zeile="" if($head);
if(($caps eq "on") && $zeile=~/$suchbegriff/){
for(;$zeile=~m/$suchbegriff/g;++$i){
}
}
if(($caps eq "") && $zeile=~/$suchbegriff/i){
for(;$zeile=~m/$suchbegriff/gi;++$i){
}
}
}
close(FILE);
$liste{"$dir/$file"}="$i" if($i>0);
$_=$file;
}



In der Variable "$startdir" steht das Startverzeichnis drin relativ zum Suchscript.

../ bedeutet eine Verzeichnisebene höher
../../ bedeutet zwei Verzeichnisebenen höher

startdir Suche in mehreren Ordnern

Schomo
Beiträge gesamt: 96

6. Mai 2002, 15:31
Bewertung:

gelesen: 2244

Beitrag als Lesezeichen
Tausend Dank,
kommt sehr gut. Das ist mir eine grosse Hilfe gewesen!!!!!!!!!!
Ich war schon schwer am schwitzen.

Liebe Grüsse Schomo