Anzeige:
Ergebnis 1 bis 3 von 3

Thema: perl: zweispaltige Datei in 1 od. 2 arrays einlesen

  1. #1
    Registrierter Benutzer
    Registriert seit
    17.06.2003
    Beiträge
    37

    perl: zweispaltige Datei in 1 od. 2 arrays einlesen

    Hallo,

    meine Schwierigkeit habe ich bei Folgendem:
    diese Datei (z.B.) soll eingelesen werden
    Code:
    11 36
    14 30
    13 34
    14 40
    12 36
    Und zwar in zwei eindimensionale oder ein zweidimensionales array, also (14, 13, 14, 12) und (30, 34, 40, 36) jeweils fuer sich.

    Der Rest des Postings ist nicht so wichtig, wenn Ihr mich schon verstanden habt Nur noch die naechsten sechs Worte:
    Ich habe gestern mit perl angefangen und bin ganz begeistert mit welch geringem Zeit- und Schreibaufwand ich hier (im Vergleich zu bash) weiterkomme - tests und reals haben mich in bash ueberfordert
    Mit bash sieht der entsprechende Teil so aus:
    Code:
    declare -a x
    declare -a y
    counter=0
    while read xin yin
    do
      let "counter += 1"
      x[${counter}]=${xin}
      y[${counter}]=${yin}
    done < input.dat
    Leider habe ich mit perl noch keinen Erfolg beim wortweisen einlesen, mein - zugegebenermassen etwas unverschaemter - Versuch:
    Code:
    open(INPUT,"< input.dat") || die "couldn open file\n";
      (@x, @y) = <INPUT>;
    close(INPUT);
    print @x;
    print @y;
    So erscheint aber alles zeilenweise in @x, @y bleibt leer...

    Bin fuer alles offen (direktes Einlesen in zweidimensionales array, oder aber zwei indimensionale, oder auch in ein eindimensionales mit spaeterer Zerpflueckung), bevorzuge aber natuerlich das zweidimensionale array (bin ja nicht mehr auf der bash ).

    Danke im Voraus
    Auf Eure Hilfe wartend
    kamome
    Geändert von kamome (17-03-2004 um 10:10 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    24.12.2001
    Ort
    anywhere before EOF
    Beiträge
    236
    Code:
    #!/usr/bin/perl
    
    open($file_hndl, "<$file_path") ||
     die("Nö, nö, digga! ($!)\n");
    foreach (<$file_hndl>) {
      ($left, $right) = split(/\s+/, $_);
      push(@left, $left);
      push(@right, $right);
    }
    close($file_hndl);
    
    print("@left");
    print("\n");
    print("@right");
    print("\n");
    Wäre z. B. eine Möglichkeit, das trennt bei dem ersten Erscheinen eines oder mehrerer Whitespace -Zeichen (Space, Tab, etc...) die Zeile in zwei Teile...
    Kommt natürlich nun auf dein genaues Dateiformat an, ob das nun auseichend ist, (evtl. könnten Reguläreausdrücke auch hilfreich sein?) aber als Ansatz könnte es dir helfen.
    chmod -R +t /*

  3. #3
    Registrierter Benutzer
    Registriert seit
    17.06.2003
    Beiträge
    37
    Vielen Dank sticky bit!

    Das sieht super aus Und laeuft super

    cu
    kamome

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •