Alex: Hash aus TXT

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

  1. 你好 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.

    再见,
     克里斯蒂安

    --
    Bauer sucht Frau! | Ich bin ja eigentlich kein Serien-Junkie…
    Fatal! Ich kann kein Reserve-Offizier mehr sein!
    http://wwwtech.de/
    1. 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®

      --
      Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
      1. 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
        
  2. 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.

  3. 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

    1. 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.

      1. hallo!

        danke nochmal für die hilfe...,muss mich mehr damit beschäftigen

        alex