Franky: Häufigkeit von Zeichgen "gut formatiert" ausgeben

Hallo,
ich habe einen Roman in digitaler Form in einer Textdatei, wo ich nun die Zeichenhäufigkeit der einzelnen Zeichen ermitteln möchte.
Die Ausgabe soll in einer Liste erfolgen, wo alle ASCII-Zeichen Aufgelistet werden. Ist eins von den Zeichen auch in dem TExt vorhanden steht dort hinter die Häufigkeit.

Diesen Code habe ich entwickelt:

<code>

my $kapitel = "";

Textdatei zum Lesen öffnen, wenn nicht vorhanden Fehlermeldung ausgeben und beenden

open(GEDICHT, "<Stechlin-01.txt") || die "Das Gedicht wurde nicht gefunden\n";

undef $INPUT_RECORD_SEPARATOR;   # satzweises Lesen unterdrücken
$kapitel = <GEDICHT>;            # Eingabedatei wird vollständig in
                                 # diese Zeichenkette eingelesen

Datei schließen

close(GEDICHT);

Länge des Skalars bestimmen

my $laenge = length($kapitel);

my %haeufig = ();

Häufigkeiten für jedes Zeichen in den Hash schreiben

for(my $i=0; $i<$laenge; $i++) {
     my $tmp = chop($kapitel);
     $haeufig{$tmp} += 1;
}

Ausgeben der Häufigkeiten

my $anzahl   = "";
for(my $i=0; $i<=255; $i++) {
    my $tmp = chr($i);
    if($haeufig{$tmp}) {
        $anzahl = $haeufig{$tmp};
    }
    else {
          $anzahl = "";
    }
    #print $hallo . "\n";
    my $ASCII_Zeichen = chr($i);
    print sprintf("%#2x", $i) . " " . $ASCII_Zeichen . ": " . $anzahl . "\t\t";
    if($i%4==0) {
       print "\n";
    }

}

</code>

Es funktioniert soweit alles, bis auf das die Ausgabe nicht, da einige Steuerzeichen die Ausgabe "verunstalten".
Wie muss ich den sprintf Aufruf anders tätigen, damit alles ordentlich formatiert ausgegeben wird?

Danke

  1. hi,

    Es funktioniert soweit alles, bis auf das die Ausgabe nicht, da einige Steuerzeichen die Ausgabe "verunstalten".
    Wie muss ich den sprintf Aufruf anders tätigen, damit alles ordentlich formatiert ausgegeben wird?

    Na ja, Steuerzeichen eben nicht ausgeben - stattdessen vielleicht den nummerischen ASCII-Wert des Zeichens? ord() o.ä. sollte es wohl auch in Perl geben, und kurzes googlen bringt mich zu der Erkenntnis, dass es das, was ich in PHP für das herausfinden der "Art" des Zeichens wohl auch als Perl-Modul gibt - nämlich Ctype.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Bei mir findet der aber kein Ctype.
      Wir benutzt ich das denn dann?
      Habe gegooglet aber es nicht hinbekommen.

      Wäre nett wenn mir das jemand erklären könnte.

      Danke

      1. Hell-O!

        Bei mir findet der aber kein Ctype.

        Das ist ja auch etwas PHP-spezifisches (siehe http://php.net/ctype).

        Wir benutzt ich das denn dann?

        Was willst du denn genau? Möchtest du die Steuerzeichen mitzählen oder eliminieren? Falls du sie mitzählen möchtest, kannst du ihren ASCII-Wert mit ord ermitteln und ausgeben und würdest den Zeichen so ihre Funktionalität nehmen.

        Siechfred

        1. hi,

          Bei mir findet der aber kein Ctype.

          Das ist ja auch etwas PHP-spezifisches (siehe http://php.net/ctype).

          Ich wieß ja extra darauf hin.
          Und auch, dass es sowas als Extension auch für Perl gibt.

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
        2. Was willst du denn genau? Möchtest du die Steuerzeichen mitzählen oder eliminieren? Falls du sie mitzählen möchtest, kannst du ihren ASCII-Wert mit ord ermitteln und ausgeben und würdest den Zeichen so ihre Funktionalität nehmen.

          Siechfred

          Dies ist der erste Teil der Ausgabe den mein Programm im Moment erzeugt: http://bff.g1studio.com/kiki/zeichen.jpg
          Das Problem ist halt das bei den oberen Zeichen die Steuerzeichen die Ausgabe unschön aussehen lassen. Möchte das Alles gleich aussieht.
          Weiss nicht wie ich da mit ord() und CType weiter kommen soll.

          1. Hell-O!

            Dies ist der erste Teil der Ausgabe den mein Programm im Moment erzeugt: http://bff.g1studio.com/kiki/zeichen.jpg

            Ah, danke.

            Das Problem ist halt das bei den oberen Zeichen die Steuerzeichen die Ausgabe unschön aussehen lassen. Möchte das Alles gleich aussieht.

            Dann lasse die ASCII-Darstellung der Steuerzeichen doch weg oder nenne sie beim Namen. Für die Optik könntest du dir mal format ansehen.

            Siechfred