Hash aus TXT
Alex
- perl
Hallo :) Hab leider nix für mein problem gefunden.
Würde gerne aus einer TXT-Datei einen Hash füllen:
TXT-Datei sieht ungefair so aus
195439
Willi
399484
Markus
129394
Florian
Der Hash sollte dann so aussehn : %test = ("195439","Willi","399484","Markus".....)
Leider weiß nicht recht wie ich das anstellen kann
kann zwar mit getc die einzelnen werte auslesen, weiß aber nicht wie ich sie dem hash zuordne.
hab das so probiert
$variable1 = getc(%test)
$variable2 = getc(%test)
$test[$variable1] = "$variable2";
funktioniert ja leider nicht, aber vielleicht fehlts ja nicht mehr weit ^^???
bitte um hilfe
Alex
你好 Alex,
Würde gerne aus einer TXT-Datei einen Hash füllen:
[...9
Der Hash sollte dann so aussehn : %test = ("195439","Willi","399484","Markus".....)Leider weiß nicht recht wie ich das anstellen kann
Zwei Zeilen auslesen, Zeile 1 als Schlüssel verwenden, Zeile 2 als Wert zuweisen.
$test[$variable1] = "$variable2";
funktioniert ja leider nicht, [...]
Es müsste auch $test{$variable1} = $variable2;
heissen.
再见,
克里斯蒂安
Moin!
Es müsste auch
$test{$variable1} = $variable2;
heissen.
oder:
%hash = (
key1 => 'value1',
key2 => 'value2',
key3 => 'value3',
);
http://www.cs.mcgill.ca/~abatko/computers/programming/perl/howto/hash/
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hi
oder:
%hash = (
key1 => 'value1',
key2 => 'value2',
key3 => 'value3',
);
Nö! Es sei denn man will das Hash in der Schleife jedesmal neu initialisieren.
MFFG
Kurt
kann zwar mit getc die einzelnen werte auslesen, weiß aber nicht wie ich sie dem hash zuordne.
getc? Du programmierst normalerweise in C?
hab das so probiert
$variable1 = getc(%test)
$variable2 = getc(%test)
Guck mal was getc macht
http://perldoc.perl.org/functions/getc.html
$test[$variable1] = "$variable2";
Das ist kein Perl. Bist du sicher das du Wissen möchtest wie es Perl geht?
funktioniert ja leider nicht, aber vielleicht fehlts ja nicht mehr weit ^^???
Du hast keine Fehlermeldungen bekommen?
Struppi.
Hallo :)
sooo bin schon etwas weiter gekommen glaub ich ...
Hier mal der Codeteil:
open(PERSO, "text.txt") || die "Datei nicht gefunden";
while(! eof(PERSO)) {
my $nummer = getc(PERSO);
my $nummer2 = getc(PERSO);
$personal{'$nummer'} = $nummer2;
}
leider mischt der jetzt die werte kunterbunt:
234Mar23
439Wil23
li2312da
so sehen die einzelnen einträge aus... sollte ich da mit trennzeichen ar beiten?
danke nochmals
sooo bin schon etwas weiter gekommen glaub ich ...
Aber nicht mit unseren Ratschlägen.
Hier mal der Codeteil:
open(PERSO, "text.txt") || die "Datei nicht gefunden";
while(! eof(PERSO)) {
my $nummer = getc(PERSO);
my $nummer2 = getc(PERSO);
Das ist irgendwie kein Perl. getc() holt, wie du auf der Seite die ich dir verlinkt habe vielleicht gelesen hast, nur ein Zeichen, insofern ist dein Ergebnis nur logisch.
$personal{'$nummer'} = $nummer2;
Du weißt was die einfachen Anführungszeichen machen? Im gegensatz zu dopppelten und warum hier überhaupt ein anführungszeichen verwendet wird ist mir nicht klar.
so sehen die einzelnen einträge aus... sollte ich da mit trennzeichen ar beiten?
Welche Trennzeichen? Du hast ja einige Tipps bekommen, leider sind diese nicht bei dir angekommen.
Im Prinzip ist das ganze ein dreizeieler in Perl:
while(<FH>) {
chomp; # Zeilenumbruch entfernen
chomp( $hash{$_} = <FH>);
}
Damit erzielst du exakt das Ergebnis das du willst, mit den Daten die du uns gezeigt hast.
Struppi.
hallo!
danke nochmal für die hilfe...,muss mich mehr damit beschäftigen
alex