linux-l: perl und schnelle Suche

Ulrich Wiederhold U.Wiederhold at gmx.net
Mo Jun 18 09:03:33 CEST 2001


Hallo,
* Oliver Bandel <oliver at first.in-berlin.de> [010618 00:20]:
> Leider schreibst Du immer nur von "datei", obwohl
> es sich nun vermutlich um mehrere handelt.

Nein, nur eine Datei, die ich mittels find erstelle.

> Das heißt, Du hast eine Index-Datei, in der die
> namen von Audiodateien drin stehen, die bestimmten
> namen von Interpreten zugeordnet sind?

Konkretes Bsp:
------ [/ftp/jazz/Miles_Davis_-_58_Sessions] ------

!FzzGrr Miles_Davis_-_58_Sessions_-_01_-_On_Green_Dolphin_Street.mp3
!FzzGrr Miles_Davis_-_58_Sessions_-_02_-_Fran_Dance.mp3
!FzzGrr Miles_Davis_-_58_Sessions_-_03_-_Stella_By_Starlight.mp3
!FzzGrr Miles_Davis_-_58_Sessions_-_04_-_Love_For_Sale.mp3
!FzzGrr Miles_Davis_-_58_Sessions_-_05_-_Straight,_No_Chaser.mp3
!FzzGrr Miles_Davis_-_58_Sessions_-_06_-_My_Funny_Valentine.mp3
!FzzGrr Miles_Davis_-_58_Sessions_-_07_-_Oleo.mp3

Das ist eine volle CD. Habe natürlich noch einiges mehr drinstehen.

> > Wenn jetzt jemand nach Davis oder Miles oder Miles Davis oder
> > Miles_DaVis sucht, sollen alle 3 files als Ergebnis ausgegeben werden.
> 
> Also Du meinst die Namen von drei Files, wobei die Dateinamen
> der Audiudateien in dem indexfile liegen?
Genau. Das mit den 3 files war nur ein Beispiel.

> Wenn ich jetzt richtig verstehe, willst du die Indexdatei
> einmal in's Perlscript einlesen und dann mehrmals
> auslesen?
Exact.

> Du schreibst einen Server/Daemon?
> 
> Also in dem Falle wäre ein hash sicherlich gut geeignet.
Yep.

> Oder willst Du die Datei jedesmal wieder neu
> durchsuchen, also jedesmal neu einlesen und
> im hash ablegen und dann alles wieder ausgeben?
> 
> Da wäre ein hash quatsch, denn dann kannst du es
> direkt ausgeben. Aber in dem falle wäre auch
> grep völlig ok, und vermutlich sogar schneller
> als die Perl-Lösung.
Nein, nur einmal einlesen.


> Wenn es dauerhaft im Speicher bleibt, dann klappt das
> mit der Hash-Lösung.
Wie kann ich das feststellen? Ich lade das Script in xchat, und denke,
es bleibt dann im Speicher (ist auf jeden Fall die ganze Zeit geladen).

> Dann musst Du die Anfragen aber irgendwie in das
> Script einpipen, oder anderweitig übergeben (z.B. mit Sockets).
mittels xchats PRIVMSG_handler.

> Solange man nicht weiß, in welchen Kontext Dein Programm
> laufen soll, kann man jedenfalls keine spezielle Lösung
> den Vorzug geben.
> 
> Deswegen, weil ich dachte, Du willst einen grep-Ersatz in
> Perl realisieren dachte ich auch an ein einfaches ausgeben
> des matches auf STDOUT, statt vo der Ausgabe aus STDOUT erst
> alles unnötig in ei hash zu schreiben.
> 
> Ist also eine Frage des Gesamt-Konzepts.
Und ich dachte wieder mal, ich hätte mich in meiner ersten Mail endlich
eindeutig und für alle verständlich ausgedrückt. :(

Gruß
Uli

-- 
Ulrich Wiederhold
Clarenbachstraße 1
50931 Köln
phone +49-221-2766619



Mehr Informationen über die Mailingliste linux-l