Zadania do wykładu o magii i typeglobach
Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowaPerl: programowanie - typeglob
- 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.
- 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?
- 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ć? - 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! - 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::.
- 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.
- 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 :)
[c] Piotr Arłukowicz, materiały z tej strony udostępnione są na licencji GNU.