Azubi: Datei auslesen

Hallo.

Habe ein Problem mit meinem Skript. Dies soll aus einer Datei, welche nur 1 Zeile enthält, einen bestimmten "Satz" auslesen.
Mein Suchmuster:
for (my $l=0; $l<5; $l++)
{
$datei[$i] =~ /([0-9]{4})([C]{1})(.{182})/;
......

Mein Problem ist, das er immer nur einen Satz speichert (den ersten der jeweiligen Datei) obwohl die datei bis max. 5 Stück enthält auf die das Suchmuster zutrifft. Hab mir auch schon die Postion des Zeiger anzeigen lassen. Dieser befindet sich sobald er den ersten Satz gefunden hat am Ende der Datei....

Würde mich über rasche Antworten freuen
Danke

  1. Mein Suchmuster:
    for (my $l=0; $l<5; $l++)

    Sowas macht man in Perl fast nie, ei array läßt sich so durchlaufen:
    foreach(@datei) {... }

    {
    $datei[$i] =~ /([0-9]{4})([C]{1})(.{182})/;
    ......

    Mein Problem ist, das er immer nur einen Satz speichert (den ersten der jeweiligen Datei) obwohl die datei bis max. 5 Stück enthält auf die das Suchmuster zutrifft. Hab mir auch schon die Postion des Zeiger anzeigen lassen. Dieser befindet sich sobald er den ersten Satz gefunden hat am Ende der Datei....

    Dein Suchmuster sucht ausdrücklich auch nuur das erste Vorkommen des Musters. Du kannst wenn es mehrfach vorkommt z.b. so durchsuchen:

    my @suche = ( $datei[$i] =~ /([0-9]{4})([C]{1})(.{182})/g);

    Struppi.

    1. Hallo,,,

      erst mal danke für die rasche Antwort.
      Hab ihren Quellcode in mein Script eingepflegt, jedoch ohne die erwünschten änderungen :(. Hier mal der Aufbau einer solchen Datei, vielleicht hilft es weiter.....

      0128ARW00234563640090800xxxx xxxxxxxxxx     34636115013000000000000000200xxx                                           0216C60343453453453464357456111108051000 0000000000060090423435634645900008600000   xxxxxxxxx xxxxxx xxxxx          xxxxx-xxxxx xxxxx xxxxxx xxxxxxxx xxxxx.41 xxxx xxxx       xxxxxxx                     0187C600934534543444431033603124498120208051000 0000000000060090800000077997000012600000   xxxxxxx + xxxxx xxxxxx              xxxxxx xxxxxxx + xxxxxxx      xxxxxxx xxxxx-xxx             000216C600908002543534534552124990120208051000 0000000000060090800000006881900001038962   xxxxxx xxxx                        xxxxxx xxxxxxx       xxxxxxx xxxxxxx   xxxxxx xxxx                  0216C6009345345344000010414440125595120208051000 000000000006009080030055345

      .... dies steht alles in einer Zeile und ich muss die Teile auslesen, wo an der 4 Stelle des Satzes ein C steht.
      Danke schon mal ;)

      1. Hi

        ich verstehe nicht was du gerne hättest ...

          
        use Data::Dumper;  
          
        my $txt="0128ARW00234563640090800xxxx xxxxxxxxxx     34636115013000000000000000200xxx                                           0216C60343453453453464357456111108051000 0000000000060090423435634645900008600000   xxxxxxxxx xxxxxx xxxxx          xxxxx-xxxxx xxxxx xxxxxx xxxxxxxx xxxxx.41 xxxx xxxx       xxxxxxx                     0187C600934534543444431033603124498120208051000 0000000000060090800000077997000012600000   xxxxxxx + xxxxx xxxxxx              xxxxxx xxxxxxx + xxxxxxx      xxxxxxx xxxxx-xxx             000216C600908002543534534552124990120208051000 0000000000060090800000006881900001038962   xxxxxx xxxx                        xxxxxx xxxxxxx       xxxxxxx xxxxxxx   xxxxxx xxxx                  0216C6009345345344000010414440125595120208051000 000000000006009080030055345";  
          
          
          
        my @treffer = ( $txt =~ /([0-9]{4})([C]{1})(.{182})/g);  
        print Dumper \@treffer;  
        
        

        liefert 3 Treffer a 3 Gruppen (entsprechend deienr Klammerung)

        $VAR1 = [
                  '0216',
                  'C',
                  '60343453453453464357456111108051000 0000000000060090423435634645900008600000   xxxxxxxxx xxxxxx xxxxx          xxxxx-xxxxx xxxxx xxxxxx xxxxxxxx xxxxx.41 xxxx xxxx       xxxxxxx     ',
                  '0187',
                  'C',
                  '600934534543444431033603124498120208051000 0000000000060090800000077997000012600000   xxxxxxx + xxxxx xxxxxx              xxxxxx xxxxxxx + xxxxxxx      xxxxxxx xxxxx-xxx             ',
                  '0216',
                  'C',
                  '600908002543534534552124990120208051000 0000000000060090800000006881900001038962   xxxxxx xxxx                        xxxxxx xxxxxxx       xxxxxxx xxxxxxx   xxxxxx xxxx              '
                ];

        Gruß
         Kurt