Zadania wstępne

Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowa

Perl: programowanie - Zadania wstępne

  1. Sprawdź, gdzie znajduje się perl w twoim systemie. W tym celu napisz which perl. Jeżeli posiadasz zainstalowanego perla, powinieneś zobaczyć rzeczywistą ścieżkę dostępu do programu wykonywalnego. Zapamiętaj ją, będziemy potem używać jej w skryptach.
  2. Wpisz polecenie perl -v i zobacz, jaką posiadasz wersję perla. Jeżeli potrzebujesz przypomnieć sobie, na jakiej stronie szukać pomocy, powinieneś zobaczyć adres strony - www.perl.org.
  3. Zobacz, jak zachowa się perl po uruchomieniu go z opcją -V. Jeżeli będziesz kiedykolwiek musiał sprawdzić, czy twój perl obsługuje na przykład wątki, to jest to właśnie odpowiednia do tego metoda.
  4. Perl uruchomiony bez opcji domyślnie wczytuje kod programu ze standardowego wejścia. Uruchom perla przez wpisanie polecenia perl i zobacz co się stanie. Aby powrócić do shella unixowego, wciśnij Ctrl+D.
  5. Obejrzyj dokumentacje do perla zainstalowaną w twoim systemie. Sprawdź, czego można się dowiedzieć, pisząc polecenia man perl; info perl oraz perldoc.
  6. Wykorzystaj perla jak prosty filtr działający jak polecenie grep. W tym celu przygotuj sobie plik z dużą ilością tekstu (polecenie man > plik wydaje się wystarczające). Następnie sprawdź jak na takim pliku zadziała polecenie grep: grep 'opcja' plik Potem wykorzystaj do tego zadania perla, używając go tak, jak pokazano na wykładzie, to znaczy: perl -ne 'print if /opcja/' plik Porównaj rezultaty obu poleceń. Zmierz czas wykonania. Który sposób jest szybszy? Dlaczego? Spróbuj wygenerować plik w którym zapisz milion liczb od 0 do 1000000 (możesz to zrobić za pomocą języka programowania, który znasz, lub używając do tego celu perla - jeżeli go znasz :)). Sprawdź za pomocą obu podanych wyżej poleceń ile jest w takim pliku liczb, które mają w sobie ciąg 123. Które z poleceń jest szybsze? Dlaczego?
  7. Skrajnym przypadkiem nieczytelnego kodu, w dodatku zgolfowanego, jest kod pokazany poniżej. Uruchom go i zobacz co robi: $LOVE= AMOUR. true.cards. ecstacy.crush .hon.promise.de .votion.partners. tender.truelovers. treasure.affection. devotion.care.woo.baby.ardor.romancing. enthusiasm.fealty.fondness.turtledoves. lovers.sentiment.worship.sweetling.pure. attachment.flowers.roses.promise.poem; $LOVE=~ s/AMOUR/adore/g; @a=split(//, $LOVE); $o.= chr (ord($a[1])+6). chr (ord($a[3])+3). $a[16]. $a[5]. chr (32). $a[0]. $a[(26+2)]. $a[27]. $a[5].$a[25]. $a[8].$a[3].chr (32).$a[29]. $a[8].$a[3]. $a[62].chr(32).$a[62]. $a[2].$a[38].$a[4]. $a[3].'.'; print $o; W sam raz na walentynki. Przykład pochodzi ze strony http://www-128.ibm.com/developerworks/linux/library/l-japh.html.
  8. Mając do dyspozycji cały internet, znajdź przykład poematu perlowego. Jakiego rodzają są to wiersze? Czy kiedykolwiek zastanawiałeś się nad tym programując?
  9. Sprawdź, ile pamięci zajmuje perl czekający na znak ze standardowego wejścia. Porównaj tę wielkość z pamięcią zajmowaną przez twój interpreter poleceń (shell).
  10. Ten punkt nie jest zadaniem, ale może być traktowany jako nieobowiązkowe przedsięwzięcie. Zapoznaj się ze stroną http://perlgolf.sourceforge.net/. Jeżeli nie znasz angielskiego, możesz opuścić to zadanie, lub nauczyć się angielskiego :) Na stronie znajdziesz wspominany na wykładzie zbiór zadań konkursu perl-golfa, wraz z rozwiązaniami. Jest to przykład wysoce specjalistycznej wiedzy z zakresu programowania i wielkiej wiedzy o języku. Czy ty także możesz pochwalić się, że jakiś język rozumiesz w tak głęboki sposób?
  11. Poszukaj w sieci Internet informacji o języku który nazywa się brainfuck. Gdy zobaczysz, jak się w nim programuje, zrozumiesz, że perl jest językiem daleko bardziej czytelnym, eleganckim, i bogatszym :)
Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowa - Perl
[c] Piotr Arłukowicz, materiały z tej strony udostępnione są na licencji GNU.