Bitte IMMER mampfen!
Patrick Andrieu
- perl
0 hotti0 Texter mit x0 hotti
Hallo alle!
Oder: newline-Zeichen in Hashkey verhindert das Löschen ;)
Nach einer halben Stunde Kopf gegen die Wand, weil mir das erlebte nicht in den Kopf wollte, wollte ich Euch die Erfahrung nicht vorenthalten:
Aus einem Flatfile mit Zeilen nach dem folgenden Muster, erstelle ich wie folgt einen Hash:
WERT0|WERT1|WERT2|WERT3|WERT4
»WERT4« sind Zahlen, die ich nun nach deren Vorkommenhäufigkeit sortieren will.
my %zahl;
while(<FILE>) {
my @tmp = (split/\|/)[4];
for(@tmp) { $zahl{$_}++ }
}
for (sort keys %zahl) { print $_, ": ", $zahl{$_}, "\n" }
ergibt sowas wie:
0: 2
12: 4
13: 3
20: 8
etc...
Nun wollte ich die 0 nicht mit ausgeben lassen. Also, nach der Schleife gleich:
delete $zahl{0};
for (sort keys %zahl) { print $_, ": ", $zahl{$_}, "\n" }
und was sehe ich da?
0: 2
12: 4
13: 3
20: 8
etc...
Baue ich mir den Hash hartkodiert im Skript nach:
my %test = ( 0 => 2,
12 => 4,
13 => 3,
20 => 8,
etc...);
dann delete $test{0}; for (sort keys %test) { print $_, ": ", $test{$_}, "\n" }
:
12: 4
13: 3
20: 8
etc...
Grmbl... grübel grübel... Dann bekam ich Hunger und dachte sprichwörtlich: »so, jetzt gehe ich erstmals etwas mampfen«. Und dann auf dem Weg zum Kühlschrank.... mampfen? Hm, mampfen??? CHOMP!!!
Und nach dem ich die Newlines gemampft hatte, konnte endlich den Schlüssel "0" gefunden werden ;)
my %zahl;
while(<FILE>) {
chomp; # MAMPFEN, IMMER MAMPFEN, IMMER UND IMMER WIEDER!
my @tmp = (split/\|/)[4];
for(@tmp) { $zahl{$_}++ }
}
delete $zahl{0};
for (sort keys %zahl) { print $_, ": ", $zahl{$_}, "\n" }
12: 4
13: 3
20: 8
etc...
Viele Grüße aus Frankfurt/Main,
Patrick
hi Patrick,
das ist seltsam, beim Mampfen ist mir noch nie was programmiertechnisches in den Kopf gekommen außer einmal ein gekochtes Ei von einem Perlhuhn.
Viele Grüße,
Horst Haselhuhn
das ist seltsam, beim Mampfen ist mir noch nie was programmiertechnisches in den Kopf gekommen ...
Hm, ich habe eine Funktion die heißt keks_essen().
Mahlzeit.
»» das ist seltsam, beim Mampfen ist mir noch nie was programmiertechnisches in den Kopf gekommen ...
Hm, ich habe eine Funktion die heißt keks_essen().
Krümelmonster ;-)
Hotte