RDW #3 - Rätsel der Woche Nummer 3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Regeln:  * Bitte nicht vor Ablauf der ersten 72 Stunden ( = drei Tage ) ~~~~~~~    nach Veröffentlichung Hinweise (Spoiler) oder Lösungen ver-            öffentlichen!          * Wenn diese Zeit abgelaufen ist, werde ich einen Thread mit            passendem Titel erstellen, in dem die Lösungen gepostet werden            und diskutiert werden können.          * Die Lösungen sollten nicht nur gepostet, sondern auch an mich            gemailt werden, damit ich sie testen, "bewerten"  und zu-            sammenfassen kann.            Die Adrese dafür lautet:            crian <---AT---> perl <---MINUS---> community <---DOT---> de            Im Betreff sollte 'RDW' und die Nummer des Rätsels stehen.            Hilfreich wäre neben dem Quellcode der Username im Forum            sowie Perl- und OS-Version, falls Du diese kennst.          * Verständnisfragen dürfen in diesem Thread gestellt werden, aber            Tipps und (Teil-) Lösungen sind hier unerwünscht.          * Ich werde die eingeschickten Programme im Netz zur Verfügung            stellen, so dass gerade lange Quellcodes nicht (komplett)            gepostet werden müssen.          * Zur Verwendung von Modulen: Ich möchte diese nicht generell            ausschließen, aber wenn quasi die komplette Aufgabe durch            die Verwendung eines Moduls ersetzt werden kann, ist dies            vielleicht nicht der Sinn der Aufgabe gewesen. Aufgabe:  Schreibe eine Funktion hexdump(), die Daten als Hexdump ausgibt. ~~~~~~~~           Beispiel:               hexdump("Ich bin Text");           Erzeugt folgende Ausgabe auf der Konsole: 0000: 49 63 68 20 62 69 6e 20 - 54 65 78 74                Ich bin Text           Der Aufruf                         hexdump(qq~Lorem ipsum dolor sit amet, consectetuer adipiscing               elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore               magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis               nostrud exerci tation ullamcorper suscipit lobortis nisl ut               aliquip ex ea commodo consequat. Duis autem vel eum iriure               dolor in hendrerit in vulputate velit esse molestie consequat,               vel illum dolore eu feugiat nulla facilisis at vero eros et               accumsan et iusto odio dignissim qui blandit praesent luptatum               zzril delenit augue duis dolore te feugait nulla facilisi.\n~);           Erzeugt folgende Ausgabe auf der Konsole: 0000: 4c 6f 72 65 6d 20 69 70 - 73 75 6d 20 64 6f 6c 6f    Lorem ipsum dolo 0010: 72 20 73 69 74 20 61 6d - 65 74 2c 20 63 6f 6e 73    r sit amet, cons 0020: 65 63 74 65 74 75 65 72 - 20 61 64 69 70 69 73 63    ectetuer adipisc 0030: 69 6e 67 20 65 6c 69 74 - 2c 20 73 65 64 20 64 69    ing elit, sed di 0040: 61 6d 20 6e 6f 6e 75 6d - 6d 79 20 6e 69 62 68 20    am nonummy nibh 0050: 65 75 69 73 6d 6f 64 20 - 74 69 6e 63 69 64 75 6e    euismod tincidun 0060: 74 20 75 74 20 6c 61 6f - 72 65 65 74 20 64 6f 6c    t ut laoreet dol 0070: 6f 72 65 20 6d 61 67 6e - 61 20 61 6c 69 71 75 61    ore magna aliqua 0080: 6d 20 65 72 61 74 20 76 - 6f 6c 75 74 70 61 74 2e    m erat volutpat. 0090: 20 55 74 20 77 69 73 69 - 20 65 6e 69 6d 20 61 64     Ut wisi enim ad 00a0: 20 6d 69 6e 69 6d 20 76 - 65 6e 69 61 6d 2c 20 71     minim veniam, q 00b0: 75 69 73 20 6e 6f 73 74 - 72 75 64 20 65 78 65 72    uis nostrud exer 00c0: 63 69 20 74 61 74 69 6f - 6e 20 75 6c 6c 61 6d 63    ci tation ullamc 00d0: 6f 72 70 65 72 20 73 75 - 73 63 69 70 69 74 20 6c    orper suscipit l 00e0: 6f 62 6f 72 74 69 73 20 - 6e 69 73 6c 20 75 74 20    obortis nisl ut 00f0: 61 6c 69 71 75 69 70 20 - 65 78 20 65 61 20 63 6f    aliquip ex ea co 0100: 6d 6d 6f 64 6f 20 63 6f - 6e 73 65 71 75 61 74 2e    mmodo consequat. 0110: 20 44 75 69 73 20 61 75 - 74 65 6d 20 76 65 6c 20     Duis autem vel 0120: 65 75 6d 20 69 72 69 75 - 72 65 20 64 6f 6c 6f 72    eum iriure dolor 0130: 20 69 6e 20 68 65 6e 64 - 72 65 72 69 74 20 69 6e     in hendrerit in 0140: 20 76 75 6c 70 75 74 61 - 74 65 20 76 65 6c 69 74     vulputate velit 0150: 20 65 73 73 65 20 6d 6f - 6c 65 73 74 69 65 20 63     esse molestie c 0160: 6f 6e 73 65 71 75 61 74 - 2c 20 76 65 6c 20 69 6c    onsequat, vel il 0170: 6c 75 6d 20 64 6f 6c 6f - 72 65 20 65 75 20 66 65    lum dolore eu fe 0180: 75 67 69 61 74 20 6e 75 - 6c 6c 61 20 66 61 63 69    ugiat nulla faci 0190: 6c 69 73 69 73 20 61 74 - 20 76 65 72 6f 20 65 72    lisis at vero er 01a0: 6f 73 20 65 74 20 61 63 - 63 75 6d 73 61 6e 20 65    os et accumsan e 01b0: 74 20 69 75 73 74 6f 20 - 6f 64 69 6f 20 64 69 67    t iusto odio dig 01c0: 6e 69 73 73 69 6d 20 71 - 75 69 20 62 6c 61 6e 64    nissim qui bland 01d0: 69 74 20 70 72 61 65 73 - 65 6e 74 20 6c 75 70 74    it praesent lupt 01e0: 61 74 75 6d 20 7a 7a 72 - 69 6c 20 64 65 6c 65 6e    atum zzril delen 01f0: 69 74 20 61 75 67 75 65 - 20 64 75 69 73 20 64 6f    it augue duis do 0200: 6c 6f 72 65 20 74 65 20 - 66 65 75 67 61 69 74 20    lore te feugait 0210: 6e 75 6c 6c 61 20 66 61 - 63 69 6c 69 73 69 2e 0a    nulla facilisi..           (Diese Aufgabe stammt von Esskar.)           Ich bitte darum, dass die nicht-Golf-Lösungen folgende Regeln           beachten:           1) Falls das Programm mit Parameter gestartet wird, so wird dieser              als Dateiname interpretiert und das Ergebnis der Funktion              die den Hex-Dump erzeugt auf STDOUT ausgegeben.           2) Falls das Programm ohne Parameter gestartet wird, so wird der              zu hexdumpende Text von STDIN gelesen. Die Ausgabe erfolgt              wieder nach STDOUT.           3) Eventuell auszugebende Fehler werden nach STDERR ausgegeben.           4) Die Form der Ausgabe soll mit obigem Beispiel übereinstimmen              (falls es nicht irgendwo Tippfehler hat;).              Um die Ergebnisse vergleichen zu können werde ich die Ausgaben              maschinell miteinander vergleichen. Dehalb bitte um die              Einhaltung dieser Regel.           5) Bitte nennt die Funktion hexdump und nicht irgendwie.           6) Es wäre schön, wenn die Golflösungen wenigstens die Verarbeitung              in der Pipe zulassen würden.           7) Es sollen keine Module verwendet werden (um use strict/warnings              wird gebeten).           (Das in 1 und 2 geforderte Verhalten ist durch einfaches Bearbeiten           des Arrays @inhalt nach           my @inhalt = <>;           gegeben.)