Zadania do wykładu o magii i typeglobach

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

Perl: programowanie - typeglob

  1. Za pomocą modułu Benchmark sprawdź, o ile szybsze jest przekazywanie parametrów przez typeglob w porównaniu z przekazywaniem przez referencję. Porównaj wyniki dla obiektów różnego typu - skalarów, tablic anonimowych lub haszy.
  2. Sprawdź, czy referencja do typegloba zachowuje się jak zwykła zmienna skalarna. Czy po zapisie $a = \*b można coś jeszcze zrobić ze zmienną $a?
  3. Porównaj działanie: *a = *b; *c = \*d; Co będzie się działo w efekcie takich dwóch przypisań? Czy między *a a *c będą jakieś różnice? Zakładamy, że jakieś obiekty o nazwie b oraz d wcześniej istniały. Jak można się do nich odwołać?
  4. Sprawdź, co zostanie wykonane, gdy przypiszesz do typegloba po prostu referencje do różnych obiektów: *a = \$b; *a = \@Tab; *a = \%hash; # itp. Czy taki sposób przypisania nie niszczy wartości *a za każdym razem? Skumaj to!
  5. Jak za pomocą tablicy symboli sprawdzić, czy zdefiniowaną zmienną globalną? Napisz program, który wyświetli wszystkie zmienne globalne obecne w perlu w pakiecie main::.
  6. Napisz funkcję ymport, która uruchomiona z dwoma parametrami: pełną nazwą modułu oraz nazwą dowolnej funkcji, wykona "w-importowanie" tej nazwy do przestrzeni nazw danego pakietu. Innymi słowy, funkcja powinna po wywołaniu np.: ymport('Data::Dumper','mojafunkcja'); umożliwić wołanie funkcji mojafunkcja z modułu Data::Dumper poprzez zapis: Data::Dumper::mojafunkcja.
  7. Zapoznaj się z treścią kodu modułu Exporter. Lektura ta może być szczególnie miła dla tych, którzy chcą zostać hakerami perlowymi :)
Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowa - Perl - Zadania
[c] Piotr Arłukowicz, materiały z tej strony udostępnione są na licencji GNU.