Moduł Acme::Morse
Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowaModuł Acme::Morse
Spis treści
Co to jest?
Moduł Acme::Morse służy do pisania perlowych programów w "alfabecie Morse'a".
Jak użyć?
use Acme::Morse;
print "S-O-S\n";
Po pierwszym wykonaniu wygląda tak:
use Acme::Morse;
.--.-..--..---.-.--..--.-..--..---.-.--.
.-.-........---..-..---.-..-.--..---.--.
..-.---......-...-...-..--..-.-.-.--.-..
----..-.-.--.-..--..-.-...---.-..---.--.
.-...-..--.---...-.-....
Jak widać moduł jest prosty i łatwy w obsłudze. Zapaleńcy mogą od razu pisać "morsem".
Jak to zrobili?
Tak na prawdę, to program nie jest tłumaczony na prawdziwy alfabet Morse'a.
Najpierw usuwane jest z kodu use Acme::Morse;. Następnie znaki są dekodowane do postaci binarnej (funkcja unpack), potem '0' są zamieniane na '.', a '1' na '-'. Wiersze są dzielone po 40 znaków, a oryginalny plik nadpisywany z dodaniem use Acme::Morse; na początku.
Uruchamianie zakodowanego programu odbywa się podobnie.
Plik jest wczytywany, łączony w jeden napis i usuwa się z niego use Acme::Morse;. Następnie jest sprawdzana poprawność kodu morsa i istnienie znacznika. Jeżeli wszystko jest w porządku, to '.' i '-' zostają zamienione na '0' i '1'. Wartości bninarne są kodowane na znaki (funkcja pack). Na koniec odczytany kod jest uruchamiany eval'em.
Na koniec przykład programu, który raz będzie tłumaczony na morsa, a raz sam się zdekoduje.
use Acme::Morse;
#tu wstaw jakiś kod
open 0;
$_=<0>;
$_=join //,<0>;
close 0;
$_=decypher $_;
open 0, ">$0";
print {0} "use Acme::Morse;\n$_";
Dodatkowe informacje
Dokumentacja
Oryginalna dokumentacja na CPANie.
Kontakt i informacje o autorze opracowania
Autor: Marek Kwiatkowski
Email: songo@(bez_tego)manta.univ.gda.pl