
Poznaj zasady programowania obiektowego w Perlu
- Utwórz i wykorzystaj moduły
- Opanuj tajniki stosowania przestrzeni nazw
- Umieść dystrybucje swoich programów w archiwum CPAN
Perl jest uniwersalnym i skutecznym językiem programowania mającym wiele zastosowań. Można wykorzystywać go do zarządzania systemami, tworzyć za jego pomocą dynamiczne witryny internetowe i manipulować danymi zgromadzonymi w tabelach baz danych. Programiści stosujący Perla twierdzą, że dzięki niemu łatwe zadania stają się jeszcze łatwiejsze, a trudne -- wykonalne. Mimo iż Perl był projektowany jako język nieobiektowy, można podczas programowania w nim stosować również koncepcje obiektowe. Aby jednak używać obiektowego języka Perl, najpierw warto zrozumieć działanie pakietów, referencji, tablic asocjacyjnych, tablic, procedur i modułów.
Dzięki książce "Perl dla średnio zaawansowanych" poznasz wszystkie komponenty języka stanowiące podstawę jego obiektowych właściwości. Czytając ją, nauczysz się korzystać z modułów i referencji, manipulować złożonymi strukturami danych za pomocą pakietu Data::Dumper oraz pracować z systemem plików. Przyswoisz sobie zasady programowania obiektowego oraz dowiesz się, jak w Perlu tworzyć obiekty i usuwać je oraz budować aplikacje o skomplikowanej strukturze. Przeczytasz także o testowaniu kodu, opracowywaniu dystrybucji i umieszczaniu ich w archiwach CPAN.
- Obsługa list za pomocą operatorów
- Instalowanie modułów z archiwów CPAN
- Korzystanie z modułów
- Tworzenie tablic anonimowych i asocjacyjnych
- Wyświetlanie i przetwarzanie złożonych danych
- Obsługa plików i katalogów za pomocą referencji
- Sortowanie
- Obiekty i egzemplarze
- Wywoływanie metod
- Usuwanie obiektów
- Tworzenie dystrybucji
- Pisanie skryptów testowych
- Tworzenie własnych modułów Test::*
Poznaj obiektowe właściwości języka Perl.
Przedmowa (9)
Wstęp (11)
1. Wprowadzenie (17)
- Co powinieneś umieć? (18)
- Po co są przypisy? (18)
- A co z ćwiczeniami? (18)
- Co powinieneś zrobić, jeśli prowadzisz zajęcia z języka Perl? (19)
2. Podstawy dla średnio zaawansowanych (21)
- Operatory do obsługi list (21)
- Przechwytywanie błędów przy użyciu funkcji eval (24)
- Dynamiczne kodowanie przy użyciu funkcji eval (25)
- Ćwiczenia (26)
3. Używanie modułów (29)
- Dystrybucja standardowa (29)
- Używanie modułów (30)
- Interfejsy funkcyjne (30)
- Wybór importowanych elementów (31)
- Interfejsy obiektowe (32)
- Bardziej typowy moduł obiektowy - Math::BigInt (32)
- Archiwum CPAN (33)
- Instalowanie modułów z archiwum CPAN (33)
- Ustawianie ścieżki w odpowiednim momencie (35)
- Ćwiczenia (37)
4. Wprowadzenie do referencji (39)
- Wykonywanie tych samych operacji na wielu tablicach (39)
- Pobieranie referencji do tablicy (41)
- Dereferencja referencji do tablicy (42)
- Pozbywanie się nawiasów (43)
- Modyfikowanie tablic (44)
- Zagnieżdżone struktury danych (44)
- Upraszczanie referencji do zagnieżdżonych elementów przy użyciu strzałek (46)
- Referencje do tablic asocjacyjnych (47)
- Ćwiczenia (49)
5. Referencje i zasięg (51)
- Wiele referencji do tych samych danych (51)
- Co się stanie, jeśli to była ta nazwa? (52)
- Zliczanie referencji a zagnieżdżone struktury danych (53)
- Co zrobić, kiedy zliczanie referencji nie działa? (55)
- Bezpośrednie tworzenie tablic anonimowych (56)
- Tworzenie anonimowych tablic asocjacyjnych (59)
- Automatyczne tworzenie referencji anonimowych (60)
- Automatyczne tworzenie anonimowych referencji i tablice asocjacyjne (63)
- Ćwiczenia (64)
6. Manipulowanie złożonymi strukturami danych (67)
- Używanie debugera do wyświetlania złożonych danych (67)
- Wyświetlanie złożonych danych przy użyciu pakietu Data::Dumper (71)
- YAML (73)
- Zapisywanie złożonych danych przy użyciu modułu Storable (73)
- Używanie operatorów map i grep (75)
- Warstwa pośrednia (75)
- Wybieranie i modyfikowanie złożonych danych (77)
- Ćwiczenia (78)
7. Referencje do procedur (79)
- Referencje do procedur nazwanych (79)
- Procedury anonimowe (83)
- Wywołania zwrotne (85)
- Domknięcia (85)
- Zwracanie procedury przez procedurę (87)
- Zmienne domknięcia jako dane wejściowe (90)
- Zmienne domknięcia jako statyczne zmienne lokalne (90)
- Ćwiczenie (91)
8. Referencje do uchwytów plików (93)
- Dawna technika (93)
- Lepszy sposób (94)
- Jeszcze lepszy sposób (95)
- IO::Handle (95)
- Referencje do uchwytów katalogów (100)
- Ćwiczenia (100)
9. Przydatne sztuczki z referencjami (103)
- Przegląd technik sortowania (103)
- Sortowanie przy użyciu indeksów (105)
- Wydajne sortowanie (106)
- Transformacje Schwartza (107)
- Wielopoziomowe sortowanie przy użyciu transformacji Schwartza (108)
- Rekurencyjnie zdefiniowane dane (108)
- Tworzenie rekurencyjnie zdefiniowanych danych (110)
- Wyświetlanie rekurencyjnie zdefiniowanych danych (112)
- Ćwiczenia (113)
10. Tworzenie większych programów (115)
- Lekarstwo na powtarzający się kod (115)
- Wstawianie kodu przy użyciu funkcji eval (116)
- Używanie instrukcji do (117)
- Używanie instrukcji require (118)
- Instrukcja require i tablica @INC (120)
- Problem z kolizjami przestrzeni nazw (122)
- Pakiety jako separatory przestrzeni nazw (123)
- Zasięg dyrektywy package (125)
- Pakiety i zmienne leksykalne (126)
- Ćwiczenia (126)
11. Wprowadzenie do obiektów (129)
- Gdybyśmy mogli rozmawiać ze zwierzętami... (129)
- Wywoływanie metod przy użyciu strzałki (130)
- Dodatkowy parametr wywołania metody (132)
- Wywoływanie drugiej metody w celu uproszczenia kodu (132)
- Kilka uwag o tablicy @ISA (133)
- Przesłanianie metod (134)
- Rozpoczynanie przeszukiwania od innego miejsca (136)
- SUPER sposób (137)
- Co zrobić ze zmienną @_? (137)
- Gdzie doszliśmy? (138)
- Ćwiczenia (138)
12. Obiekty z danymi (139)
- Koń to koń - ale czy na pewno? (139)
- Wywoływanie metod egzemplarza (140)
- Dostęp do danych egzemplarza (141)
- Jak utworzyć konia? (141)
- Dziedziczenie konstruktora (142)
- Tworzenie metod działających zarówno z klasami, jak i z egzemplarzami (143)
- Dodawanie parametrów do metod (143)
- Ciekawsze egzemplarze (144)
- Koń o innym kolorze (145)
- Pobieranie zapisanych danych (146)
- Nie zaglądaj do pudełka (147)
- Szybsze metody pobierające i ustawiające wartość (148)
- Metody pobierające wartości pełniące funkcje metod ustawiających wartość (148)
- Metody działające tylko dla klasy lub tylko dla egzemplarza (149)
- Ćwiczenie (150)
13. Usuwanie obiektów (151)
- Porządkowanie po sobie (151)
- Usuwanie obiektów zagnieżdżonych (153)
- Konie nie do zajechania (155)
- Zapis dla obiektów pośrednich (156)
- Dodatkowe zmienne egzemplarza w klasach pochodnych (158)
- Używanie zmiennych klasy (160)
- Osłabianie argumentów (161)
- Ćwiczenie (163)
14. Wybrane zaawansowane zagadnienia z programowania obiektowego (165)
- Metody UNIVERSAL (165)
- Testowanie poprawności działania obiektów (166)
- Metoda AUTOLOAD jako ostatnia deska ratunku (167)
- Używanie metody AUTOLOAD do obsługi akcesorów (168)
- Łatwiejszy sposób tworzenia metod pobierających i ustawiających wartości (169)
- Dziedziczenie wielokrotne (171)
- Ćwiczenia (171)
15. Eksportowanie (173)
- Jak działa instrukcja use? (173)
- Importowanie przy użyciu modułu Exporter (174)
- Tablice @EXPORT i @EXPORT_OK (175)
- Tablica asocjacyjna %EXPORT_TAGS (176)
- Eksportowanie w modułach obiektowych (177)
- Niestandardowe procedury do obsługi importowania (178)
- Ćwiczenia (180)
16. Tworzenie dystrybucji (181)
- Można to zrobić na różne sposoby (182)
- Korzystanie z programu h2xs (183)
- Dokumentacja zagnieżdżona (189)
- Kontrolowanie dystrybucji przy użyciu pliku Makefile.PL (192)
- Alternatywne lokalizacje instalacji (PREFIX=...) (193)
- Trywialna instrukcja make test (194)
- Trywialna instrukcja make install (195)
- Trywialna instrukcja make dist (195)
- Alternatywna lokalizacja biblioteki (196)
- Ćwiczenie (197)
17. Testy podstawowe (199)
- Więcej testów oznacza lepszy kod (199)
- Prosty skrypt testowy (200)
- Sztuka testowania (201)
- Środowisko testowe (203)
- Pisanie testów przy użyciu modułu Test::More (204)
- Testowanie właściwości obiektowych (206)
- Testowanie listy TODO (208)
- Pomijanie testów (209)
- Bardziej złożone testy (zbiory skryptów testowych) (209)
- Ćwiczenie (210)
18. Testy zaawansowane (211)
- Testowanie długich łańcuchów znaków (211)
- Testowanie plików (212)
- Testowanie urządzeń STDOUT i STDERR (213)
- Używanie obiektów zastępczych (215)
- Testowanie dokumentacji POD (217)
- Testowanie pokrycia (218)
- Pisanie własnych modułów Test::* (218)
- Ćwiczenia (221)
19. Wkład w CPAN (223)
- Archiwum CPAN (223)
- Przygotowania (223)
- Przygotowywanie dystrybucji (224)
- Umieszczanie dystrybucji w archiwum (225)
- Przedstawianie modułu (226)
- Testowanie na wielu platformach (226)
- Zastanów się nad napisaniem artykułu lub przeprowadzeniem wykładu (226)
- Ćwiczenie (227)
A Rozwiązania ćwiczeń (229)
Skorowidz (255)