[Cologne-pm] Hash von Hash von Array???

Melanie scholz.melanie at web.de
Tue Feb 24 15:18:05 CST 2004


Hallo zusammen,

ihr seid fix! Und ihr macht gleich einen ganzen Rundumschlag... nun gut, 
ich will mal versuchen alles zusammen zu sammeln und was draus zu lernen.

Aber vorweg: schlagt mich nicht! Ich kenn Perl seit genau 2 Wochen!

[Thema Referenzen]

> [...]  Bei Arrays ist es deswegen üblich, weil der
> Kopieraufwand uU erheblich sein kann; allerdings sollte man das
> dann logischerweise nur dann tun, wenn man das gleiche Array
> nicht später für andere Zwecke (bzw Datensätze) recyclet.

Ah, okay, das leuchtet mir ein.
> 
>     chop(my $Krankheiten =<STDIN>);
> 
> Übrigens sehe ich da was, das mir garnicht aufgefallen ist: du
> willst nicht chop(), sondern chomp(). 

Ups, wie gut, daß es "Suchen und ersetzen" gibt, das habe ich überall.

 > Ich sehe Bedarf fuer Perltidy.
 >    http://perltidy.sourceforge.net/
 > Lassen wir ihn mal ueber deinen Code laufen ...

Danke für den Tip, das ist mir noch nicht begegnet!


 >> my @Krankheiten = split /,/,$Krankheiten;


 > 1. Eingabe: "Haarausfall, Heisshunger, Streichelsucht"
 >
 >     my $Krankheiten = "Haarausfall, Heisshunger, Streichelsucht";
 >     my @Krankheiten = split /,/, $Krankheiten;
 >
 >     use Data::Dumper;
 >     print Dumper \@Krankheiten;
 >    => $VAR1 = [
 >                 'Haarausfall',
 >                 ' Heisshunger',
 >                 ' Streichelsucht'
 >               ];
 >   Da sind ja Spaces am Anfang!
 >   Ein "split /\s*,\s*/, $Krankheiten" behebt das.

[Einschub Aristoteles]
 > Andere Möglichkeit: man gibt eine Krankheit pro Zeile ein, und
 > schliesst die Eingabe mit einer leeren Zeile ab.
 >
 >    while(<>) {
 >        chomp;
 >        last if not /\S/; # Abbruch wenn kein nicht-Leerzeichen
 >        push @Krankheiten, $_;
 >    }

Danke!

[Wolfgang]
 > Benutzertechnisch ist natuerlich  beides ungut.
 > Wie waere es mit einer Auswahlbox der bekannten Krankheiten, samt
 > Autoergaenzung und natuerlich der Moeglichkeit, neue Krankheiten
 > auch einzugeben?

[Aristoteles]
 > Klar, das vorgestellte Interface ist natürlich nicht gerade schön
 > zu bedienen.

Ähm, ja, schon. Habt ja recht. Aber ich war eigentlich so schon recht 
froh das ohne größeres Chaos hinbekommen zu haben.
Irgendwann - so in ganz ferner Zukunft - soll das dann mal in Richtung 
cgi - oder so, weiß ich noch nicht.
Lacht ruhig, ich weiß es ist blödsinnig sich sowas vorzunehmen, wenn man 
keine Ahnung hat ,-)

 > 2. Macht ein Array hier Sinn?  Arrays lassen sich zwar gut
 >    anzeigen und nach Positionen anspringen, aber schlecht
 >    durchsuchen.  Es ist kein grosses Problem bei kleinen
 >    Arrays, aber bei groesseren ist ein Hash besser.

Ich denke, es werden nicht mehr als drei oder maximal vier Einträge pro 
Array werden.

 > 3. Durchsuchen.  Wenn du irgendwann die Krankheiten
 >    durchsuchen willst, dann willst du normierte, einheitliche
 >    Krankheitsnamen.  Oder besser noch, eine numerierte Liste
 >    von Krankheitsnamen, wo du in einem Hash (Platzverbrauch bei
 >    hauptsaechlich leeren Arrays!) die Nummer als key und geg.
 >    einen Kommentar als value verwendest.  (Datenmodellierung!)

Das allerdings ist natürlich richtig, habe ich bei diversen anderen 
Fällen auch so gemacht... muß ich nochmal drüber nachdenken, danke!

 > 4. Speaking of ... wie speicherst du die Daten?  Was du machst,
 >    klingt mir extrem verdaechtig nach einer Datenbankanwendung.
 >    Perl kann recht gut mit Datenbanken, siehe das DBI-
 >    (DataBase Interface) und die DBD::*-  (DataBase Driver)
 >    Module.  Fuer wenige Tausend Eintraege sind sogar CSV-Files
 >   (Komma-separierte Daten) recht brauchbar.

Genau das soll es werden - irgendwann mal.
Echt? CSV's klappen noch mit ein paar Tausend? Das würde mir ja völlig 
reichen! Dicke!
Nicht, daß ich trotzdem Spaß dran hätte mich auch weiter in die 
Datenbank-Richtung fortzubewegen, aber eins nach dem anderen.

 > Fuer sowas ist Data::Dumper ein hervorragendes Tool: ist die
 > Struktur so, wie ich dachte?

Ja, das hatte ich auch schon gefunden und werd's einbauen und ausprobieren.

Herzlichen Dank schonmal, ihr habt mir mehr Fragen beantwortet als ich 
gestellt hatte!

Melanie




More information about the Cologne-pm mailing list