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

Beitrag lesen

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