Moduł Convert::Morse
Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowaModuł Convert::Morse
Wstęp
Wybrałem ten moduł bardziej ze względu na jego ciekawą funkcję niż złożoność i różnorodność metod od parzenia kawy, po samoczynne pisanie kodu w perlu ;) Otóż ten prosty modulik pozwala nam tłumaczyć podane słowa, frazy na alfabet morse'a! Co lepsze, możemy nawet modyfikować tokeny i stworzyć swoją wersję tego bardzo popularnego szyfru. Zobaczmy więc co potrafi to maleństwo.
Wejście
Tekst ASCII na wejściu może zawierać zarówno wielkie jak i małe litery więc wszystkie znaki zostaną wcześniej przekonwertowane do postaci małych liter (lowercase).
Jeśli na wejściu podamy kod Morse'a należy pamiętać, że składa się on z myślników '-' i kropek '.'. Poszczególne elementy kodu nie mogą zawierać spacji pomiędzy sobą natomiast pojedyncze zakodowane znaki ASCII muszą być oddzielone co najmniej jedną spacją. Jeżeli spacji będzie więcej niż jedna moduł odczyta to jako koniec starego i rozpoczęcie nowego słowa. I tak np:
'.-' # dobrze! otrzymamy literkę 'A'.
'. -' # źle! pojedyncza spacja oznacza oddzielenie jednego kodu od drugiego.
'.-[spacja]-...' da nam 'AB' natomiast '.-[spacja][spacja]-...' już 'A B'.
Metody konwertujące zostały zaprojektowane w ten sposób, by ignorować złe/nieznane dane na wejściu tak więc możemy spokojnie napisać
print as_ascii('Hello -- --- .-. ... . Perl!');
Jednakże należy uważać na sytuacje kiedy np zamiast wykrzyknika po słowie Perl pojawiła się kropka lub myślnik. Nasza metoda as_ascii przekonwertowałaby te znaki odpowiednio na litery 'E' lub 'T'. Warto więc uzyć Convert::Morse::error() aby sprawdzić czy wszystko poszło dobrze.
Wyjście
Wyjście będzie zawsze składać się z wielkich liter w przypadku konwersji z alfabetu morse'a do ascii, lub ze znaków z klasy [.- ] w przypadku użycia metody as_morse().
Metody
- as_ascii()
- Konwertuje kod Morse'a składający się z kropek i kresek do ASCII.
- as_morse()
- Konwertuje tekst ASCII do kodu Morse'a.
- is_morse()
- Sprawdza czy wejście jest kodem Morse'a czy nie.
- is_morseable()
- Sprawdza czy wejście może być całkowicie wyrażone w kodzie Morse'a.
- tokens()
- Pozwala ustawić/pobrać hasz tokenów, które używane są przy konwersji pomiędzy ASCII a kodem Morse'a np:
Convert::Morse::tokens( { 'a' => '..-...-..--..' } );
- error()
- Zwraca ostatni komunikat błędu lub wartość undef jeśli błędu nie było.
Przykład
A oto przykład, który uwidacznia praktyczne zastosowanie powyższych metod:
use Convert::Morse qw(as_ascii as_morse is_morsable);
print as_ascii('.... . .-.. .-.. --- -- --- .-. ... .'),"\n"; # 'Helo Morse'
print as_morse('Perl?'),"\n"; # '.--. . .-. .-.. ..--..'
print "Perl jest morsowalny :)\n" if is_morsable('Perl.'); # print "Yes!"
Dokumentacja
I to by było na tyle, miłej zabawy! Kompletną dokumentację znajdziecie tutaj: http://search.cpan.org/~tels/Convert-Morse-0.05/lib/Convert/Morse.pm.
Uniwersytet Gdański - Instytut Informatyki - Strona domowa - Perl - Wyklady