erstes pearl-"prog" anfängerhilfe

Diskutiere mit über: erstes pearl-"prog" anfängerhilfe im Mac OS X Entwickler, Programmierer Forum

  1. banz

    banz Thread Starter MacUser Mitglied

    Beiträge:
    406
    Zustimmungen:
    0
    Registriert seit:
    26.05.2003
    hi, hoffe das Thema passt ungefähr hier rein.
    Habe ein Anfänger-Übungs-programm in Pearl "Geschrieben",
    Aufgabe:
    -Öffnen einer bestimmten Textdatei (.txt)
    -Zählen und Drucken der Zeichen
    -Zählen und Drucken der Wörter
    -Zählen und Drucken der Zeilen
    habe alles laut Anweisung gemacht, das mit den Zeichen und Wörtern funzt auch ganz gut, nur die Zeilen zählt er nicht richtig.
    Kann sich vielleicht jemand das Programm mal angucken und mir verraten wo ich mich vertippt habe? Wäre supernett.
     
  2. /etc

    /etc MacUser Mitglied

    Beiträge:
    137
    Zustimmungen:
    0
    Registriert seit:
    21.08.2003
    gerne, aber wo ist ein Link dazu, oder hab ich das übersehen?
     
  3. banz

    banz Thread Starter MacUser Mitglied

    Beiträge:
    406
    Zustimmungen:
    0
    Registriert seit:
    26.05.2003
    link? hab keinen Webspace, könnte dir das teilchen entweder schicken, oder den Text komplett hier posten(ist ja nicht so lang;)
     
  4. /etc

    /etc MacUser Mitglied

    Beiträge:
    137
    Zustimmungen:
    0
    Registriert seit:
    21.08.2003
    ja, poste einfach mal, dann können auch noch andere daran teilhaben!
     
  5. banz

    banz Thread Starter MacUser Mitglied

    Beiträge:
    406
    Zustimmungen:
    0
    Registriert seit:
    26.05.2003
    #!/usr/bin/perl -w

    # prog um Zeichen, W??rte und Zeilen einer .txt-datei zu z?§hlen
    $TheFile = "beispiel.txt";

    # Datei ??ffnen, falls vorhanden, oder prog schliessen
    open (INFILE, $TheFile) or die "Die Datei $TheFile konnte nicht gefunden werden.\n";

    # initialisieren der Z?§hlr
    $CharCount = 0;
    $WordCount = 0;
    $LineCount = 0;
    while(<INFILE>) {
    $TheLine = $_; # Zeileninhalt speichern
    chomp($TheLine); # Zeilenumbruch entfernen
    $LineCount = $LineCount + 1;
    $LineLen = length($TheLine);
    $CharCount = $CharCount + $LineLen;
    if($TheLine eq "") { next }; # Zeile ist leer, weiter
    $WordCount = $WordCount + 1; # Zeile hat mind. 1 Wort
    $CharPos = 0;
    until($CharPos == $LineLen)
    {
    if(substr($TheLine, $CharPos, 1) eq " ")
    { $WordCount = $WordCount + 1 }
    $CharPos = $CharPos + 1;
    } # Ende until-Schleife
    } # Ende while(<INFILE>)-Schleife

    # Ergebnis
    print "Fuer die Datei $TheFile:\n";
    print "Anzahl der Zeichen $CharCount\n";
    print "Anzahl der Woerter $WordCount\n";
    print "Zeilenanzahl $LineCount\n";
     
  6. banz

    banz Thread Starter MacUser Mitglied

    Beiträge:
    406
    Zustimmungen:
    0
    Registriert seit:
    26.05.2003
    Sorry, issn bisken unübersichtlich angekommen und die Umlaute sind auch daneben, aber vielleicht geht`s auch so
     
  7. Descartes

    Descartes unregistriert

    Beiträge:
    189
    Zustimmungen:
    0
    Registriert seit:
    14.12.2002
    Probiers mal etwas kürzer...

    PHP:
    #!/bin/perl
    #---------------------------------------------------------------------
    #
    use strict;
    use 
    warnings;
    use 
    diagnostics;
    #
    #---------------------------------------------------------------------
    #

    my$zeile, @dummy, @datei$datei_zeilen$datei_woerter$datei_zeichen );


    #
    # Datei 'beispiel.txt' oeffnen, in ein Array laden und Datei wieder schliessen
    #
    open(FILE"< beispiel.txt") or die("Fehler: $!\n");
    @
    datei = <FILE>;
    close(FILE);

    $datei_zeilen = $#datei + 1; # Anzahl Zeilen entspricht der Anzahl der Arrayelemente
                                 # Array beginnt bei 0, daher um 1 erhoehen

    #
    # Ueber jedes Arrayelement (= Zeile) iterieren...
    #
    foreach( @datei ) {
      
    $zeile $_;
      @
    dummy split(" "$zeile);         # aktuelle Zeile an den Leerzeichen aufsplitten und in ein Array speichern

      
    $datei_zeichen += length($zeile);    # Anzahl Zeichen entspricht der Stringlaenge
      
    $datei_woerter += ( $#dummy + 1 );   # Anzahl Woerter in der Zeile entspricht der Anzahl der Arrayelemente
                                           # Array beginnt bei 0, daher um erhoehen
    }

    printf("Anzahl Zeichen: %i\n"$datei_zeichen);
    printf("       Woerter: %i\n"$datei_woerter);
    printf("       Zeilen : %i\n"$datei_zeilen);

    __END__
     
  8. Descartes

    Descartes unregistriert

    Beiträge:
    189
    Zustimmungen:
    0
    Registriert seit:
    14.12.2002
    PHP:
    while(<INFILE> ) {
        ...
        
    # diese Zeile wird nie abgearbeitet? Also weg damit
        
    if($TheLine eq "") { next }; # Zeile ist leer, weiter
        
    ...
    }

    PHP:
    while(<INFILE> ) {
        ...
        
    $WordCount += 1;
        
    $CharPos 0;
        
    until($CharPos == $LineLen)
        {
            if(
    substr($TheLine$CharPos1eq " ") { $WordCount $WordCount }
            
    $CharPos $CharPos 1;
        } 
    # Ende until-Schleife
        
    ...
    }
    das kann man kürzer schreiben:

    PHP:
    while(<INFILE> ) {
        ...
        
    $WordCount += 1;
        
    $WordCount += scalarsplit" "$TheLine ) );
        ...
    }
    Aber hierbei meckert Perl an, dass implizit generierte @_ Arrays nicht mehr verwendet werden sollen. Also sauberer programmieren und ein separates Array @TheWords verwenden:

    PHP:
    my( @TheWords );
    while(<
    INFILE> ) {
        ...
        
    $WordCount += 1;
        @
    TheWords split" "$TheLine );
        
    $WordCount += ( $#TheWords + 1 );
        
    ...
    }
     
  9. banz

    banz Thread Starter MacUser Mitglied

    Beiträge:
    406
    Zustimmungen:
    0
    Registriert seit:
    26.05.2003
    oh man, danke

    für die schnelle und vor allem ausführliche Hilfe.
    ..auch wenn das Meiste noch wie "Bhf." für mich klingt.
    Das ist heute mein erster Tag mit Pearl, aber ich werd's schon noch lernen!!!!:rolleyes:
     
  10. Descartes

    Descartes unregistriert

    Beiträge:
    189
    Zustimmungen:
    0
    Registriert seit:
    14.12.2002
    Für den Einstieg vielleicht ganz empfehlenswert:

    Einführung in Perl
    http://www.oreilly.de/catalog/einperl3ger/
    Randal L. Schwartz & Tom Phoenix
    Deutsche Übersetzung von Jørgen W. Lang
    3. Auflage Dezember 2001
    ISBN 3-89721-147-5
    Seiten 368
    EUR34.00, SFR57.90

    Oder gleich das Referenzwerk zu Perl von Larry Wall:

    Programmieren mit Perl
    http://www.oreilly.de/catalog/pperl3ger/
    Larry Wall, Tom Christiansen & Jon Orwant
    Deutsche Übersetzung von Peter Klicman
    2. Auflage Juli 2001
    ISBN 3-89721-144-0
    Seiten 1128
    EUR56.00, SFR89.90
     
Die Seite wird geladen...
Ähnliche Themen - erstes pearl prog Forum Datum
Mein erstes macOS Programm Mac OS X Entwickler, Programmierer 22.08.2016
Mein erstes kleines App/Droplet fuer Mac: iMountIt Mac OS X Entwickler, Programmierer 21.08.2007
Java-Prog --> jar-Datei OHNE externes img-Verzeichnis - wie? Mac OS X Entwickler, Programmierer 29.07.2007
Welchen universal Prog-Editor? Mac OS X Entwickler, Programmierer 21.04.2006
Erfahrungen mit C# im Prog. Mono ? Mac OS X Entwickler, Programmierer 18.11.2005

Diese Seite empfehlen

Benutzerdefinierte Suche