Hallo Alex,
Hi,
in meiner Datenbank moechte ich nun eine Suchfunktion einbauen. Das Prinzip habe ich mri scho ueberlegt, nur bei der Umsetzung haperts.
Also die Datenbank sieht folgendermaßen aus:
feld1a%%feld2a%%feld3a%%etc.
feld1b%%feld2b%%feld3b%%etc.also in jeder Zeile 1 Datensatz mit verschiedenen Feldern, getrennt mit einem %%.
Jetzt moechte ich die Moeglichkeit geben, mehrere Suchbegriffe einzugeben (getrennt durch ein Leerzeichen) und Gross/Kleinschreibung sollen beachtet werden. Ausserdem soll man noch die Moeglichkeit haben, dass entweder 1 Suchbegriff oder alle, die eingegeben wurden, zum Auflisten (in der Ergebnisliste) reicht.
Versuch' mal das:
#!perl -w
use strict;
1 = alle muessen gefunden werden
my $alle=1;
Suchstring
my $search = 'eins zwei drei';
chomp $search;
my $filename = 'pfad/zur/datei';
Suchstring in Array,
Da Usereingaben, Metazeichen in Literale wandeln
my @search = map quotemeta, split / +/, $search;
my @res;
while (my $line= <DATA>) {
# alle Suchwoerter in Zeile suchen
# wenn gefunden, 1 in @found, sonst nix
my @found= map $line=~ m/$_/, @search;
# falls was gefunden
if (@found) {
# nur in @res wenn alle gefunden
if ($alle) { push @res,$line if $#found == $#search}
# oder wenn mind. 1 gefunden
else {push @res,$line}
}
}
print @res;
__DATA__
eins%%zwei%%drei%%vier
eins%%zwei%%drei
eins%%zwei
eins
Danke fuer Eure Hilfe!!!
-Alex
Gruss
Kai