okladka

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)