Kai Diefenbach: Suchfunktionhilfe

Beitrag lesen

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