RedBO: Perl Probleme

Hallöchen !

Also ich habe ein Problem was wie folgt aussieht:

ich möchte mit dem Perl Script eine Textdatei öffnen und diese zeilenweise durchsuchen lassen:

auswahl.txt

..

schmidt , hubert
genscher , vladimir
duersie , ich
..<

wenn er dann an einer stelle angekommen ist, also welchen name ich suche dann soll er mir den vornamen und nachnamen jeweils in eigener variable legen.

ich dachte an sowas:

$datei ="auswahl.txt"; /-> meine Datei
open (DATEI, $datei); /-> öffne Datei
while .... (<DATEI> ) /-> durchlaufe Datei solang bis gewünschter Wert gefunden wurde

@namen = split (/ , / , DATEI); /-> Suche aus Zeile Name und Vorname und split(t)e die jeweils in eine eigene Datei

!?

!?

oder wie könnte ich das machen !?
Wäre über Antworten echt dankbar!

MFG RedBO

  1. Halihallo RedBO

    wenn er dann an einer stelle angekommen ist, also welchen name ich suche dann soll er mir den vornamen und nachnamen jeweils in eigener variable legen.
    $datei ="auswahl.txt"; /-> meine Datei
    open (DATEI, $datei); /-> öffne Datei
    while .... (<DATEI> ) /-> durchlaufe Datei solang bis gewünschter Wert gefunden wurde

    @namen = split (/ , / , DATEI); /-> Suche aus Zeile Name und Vorname und split(t)e die jeweils in eine eigene Datei

    if ($namen[0] eq $gesuchter_name) {
       $name=$namen[0];
       $vorname=$namen[1];
    }

    dann wird der Name und Vorname in "jeweils in eigener variable" abgelegt, wenn der
    Nachname zutrifft.

    Viele Grüsse

    Philipp

    --
    RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
    Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
    1. Servuz Phil .....

      if ($namen[0] eq $gesuchter_name) {
         $name=$namen[0];
         $vorname=$namen[1];
      }

      ja das ist gut danke, ist das schon für die Schleife oder wie sage ich dem das er die Datei Zeile für Zeile absuchen soll!

      Aha in dem Array steht also immer: Name1, Vorname1, Name2, Vorname2, .... so müsste das Array dann aussehen oder !?

      Ich weiß ich habe viele fragen :-)

      1. Halihallo RedBO

        ja das ist gut danke, ist das schon für die Schleife oder wie sage ich dem das er die Datei Zeile für Zeile absuchen soll!

        perldoc -f last

        Aha in dem Array steht also immer: Name1, Vorname1, Name2, Vorname2, .... so müsste das Array dann aussehen oder !?

        Nein, das war ein Skalar, kein Array:
        Für Hashes, Arrays und Skalare: perldoc perlfaq4

        Viele Grüsse

        Philipp

        --
        RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
        Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
        1. naja ich hatte auf ein paar Befehle gehofft mit denen ich arbeiten sollte bzw nach denen ich dann suchen könnte!
          :-((

          MFG

  2. ich dachte an sowas:

    use strict;

    $datei ="auswahl.txt"; /-> meine Datei

    my $datei = 'auswahl.txt';

    open (DATEI, $datei); /-> öffne Datei

    open DATEI, $datei || die "Kann $datei nicht zum lesen öffnen, weil: $!";

    while .... (<DATEI> ) /-> durchlaufe Datei solang bis gewünschter Wert gefunden wurde

    'eq' iswt der Vergleichsoperator für Strings.

    @namen = split (/ , / , DATEI); /-> Suche aus Zeile Name und Vorname und split(t)e die jeweils in eine eigene Datei

    Das ist Quatsch, du willst die aktuelle Zeile splitten und weißt, das es maximal zwei Ergebnisse gibt.

    chomp; # Newline zeichen abschneiden

    my( $vor_name, $nach_name) = split /,/, $_;

    Ansonsten ist die perlfaq http://perldoc.com/perl5.8.0/pod/perlfaq.html (liegt aber auch auf deinem Rechner) ein guter Einstieg, um nicht direkt von Anfang an zuviele Fehler zu machen.

    Struppi.

    1. open (DATEI, $datei); /-> öffne Datei

      open DATEI, $datei || die "Kann $datei nicht zum lesen öffnen, weil: $!";

      open DATEI, '<' , $datei or die ".....";

      perldoc perlop (!), deine Variante ist tasächlich fehlerhaft.

      Mit dem Rest hast du völlig Recht.

      1. open (DATEI, $datei); /-> öffne Datei

        open DATEI, $datei || die "Kann $datei nicht zum lesen öffnen, weil: $!";

        open DATEI, '<' , $datei or die ".....";

        perldoc perlop (!), deine Variante ist tasächlich fehlerhaft.

        '<' ist optional und wenn schon dann so "<$datei"

        aber mit dem or operator hast du recht, bzw. meine Version müßte so aussehen:
        open (DATEI, $datei) || die ....

        Struppi.

        1. open (DATEI, $datei); /-> öffne Datei

          open DATEI, $datei || die "Kann $datei nicht zum lesen öffnen, weil: $!";

          open DATEI, '<' , $datei or die ".....";

          perldoc perlop (!), deine Variante ist tasächlich fehlerhaft.

          '<' ist optional und wenn schon dann so "<$datei"

          RTFM, bitte.

          1. '<' ist optional und wenn schon dann so "<$datei"

            RTFM, bitte.

            ja und da lese ich folgenden Satz " If MODE is '<' or nothing, the file is opened for input. " oder reden wir von etwas anderem?

            Struppi.

            1. ich danke euch für eure reichlichen Antworten ich werde mir das mal zu Gemüte führen!

              danke danke!

  3. Hi,

    $datei ="auswahl.txt"; /-> meine Datei
    open (DATEI, $datei); /-> öffne Datei

    flock nicht vergessen

    while .... (<DATEI> ) /-> durchlaufe Datei solang bis gewünschter Wert gefunden wurde

    Idee (ungetestet):

    my @namen;
    while(<DATEI>)
    {
    my $i++;
    print "Zeile $i: $_\n";

    my @dummy = split(/,/,$_);
    push(@namen, @dummy);
    }

    open (NEUEDATEI, ">neu.txt") or die $!;
    for (my $i;$i<$#namen;$i+=2)
    {
    print NEUEDATEI "Vorname: $namen[$i+1]\n";
    print NEUEDATEI "Nachname: $namen[$i]\n\n";
    }
    close NEUEDATEI;

    cya
    alligator

    1. Upps, irgendwie hab ich die Zeile überlesen mit der Namensüberprüfung.
      Hat mich schon gewundert...
      Vergiss einfach das Posting :o))

      cya
      alligator

  4. Also ich habe ein Problem was wie folgt aussieht:

    ich möchte mit dem Perl Script eine Textdatei öffnen und diese zeilenweise durchsuchen lassen:

    auswahl.txt

    ..
    schmidt , hubert
    genscher , vladimir
    duersie , ich
    ..<

    wenn er dann an einer stelle angekommen ist, also welchen name ich suche dann soll er mir den vornamen und nachnamen jeweils in eigener variable legen.

    ich dachte an sowas:

    so z.B. (nicht getestet... :-)

    $datei ="auswahl.txt"; /-> meine Datei
    open (DATEI, $datei); /-> öffne Datei

    map ($nach,$vor)=split('\s*,\s*') , grep(/$suchname/,<DATEI>);

    close(DATEI);