Perl. Receptury. Wydanie II - Helion
Tytuł oryginału: Perl Cookbook, 2nd Edition
Tłumaczenie: Mateusz Michalski (wstęp, rozdz. 1 - 10), Rafał Szpoton (rozdz. 11 - 16, 22), Sławomir Dzieniszewski (rozdz. 17 - 21)
ISBN: 83-7361-328-5
stron: 1056, Format: B5, okładka: miękka
Data wydania: 2004-02-19
Księgarnia: Helion
Cena książki: 99,90 zł
Rozwiązania i przykłady dla programistów Perla
Książka "Perl. Receptury. Wydanie II" to wyczerpujący zbiór problemów, ich rozwiązań oraz praktycznych przykładów przydatnych dla wszystkich programujących w Perlu. Pierwsze wydanie książki cieszyło się ogromną popularnością, uznane zostało nie tylko za jedną z najlepszych książek o Perlu, lecz również za najlepszą książkę dotyczącą programowania w dowolnym języku. Ukazanie się pierwszego wydania tej książki to zarazem data powstania nowego rodzaju podręcznika programowania, nie jest to tylko zbiór różnego rodzaju sztuczek i wskazówek, ale przede wszystkim książka, która przedstawia niuanse programowania za pomocą zaczerpniętych z praktyki programistycznej problemów oraz przykładów.
Drugie wydanie książki "Perl. Receptury" zostało rozszerzone w taki sposób, aby opisać nie tylko nowe cechy samego Perla, lecz również nowe technologie powstałe od czasu opublikowania pierwszego wydania. Dodane zostały dwa całkiem nowe rozdziały, a wiele innych zostało poszerzonych: pojawiło się 80 nowych receptur, zaś 100 zostało uaktualnionych.
Książka zawiera omówienie obróbki danych (łańcuchów znakowych, wartości liczbowych, dat, tablic zwykłych oraz asocjacyjnych), obsługi operacji wejścia-wyjścia, wyrażeń regularnych, modułów, odwołań, obiektów, struktur danych, sygnałów, wykorzystania baz danych, tworzenia aplikacji graficznych, stosowania komunikacji międzyprocesowej, bezpieczeństwa, programowania aplikacji internetowych, wykorzystywania CGI oraz LWP.
Tę edycję uzupełniono także o:
- Opis obsługi standardu kodowania Unicode w Perlu z uwzględnieniem obsługi łańcuchów znakowych, wyrażeń regularnych oraz operacji wejścia-wyjścia.
- Specjalny rozdział poświęcony programowaniu przy użyciu mod_perla, będącego modułem Apache osadzającym język Perl w tym popularnym serwerze HTTP, co ogromnie przyspiesza wykonywanie zadań w porównaniu z tradycyjnym interfejsem CGI.
- Nowe oraz uaktualnione receptury opisujące zastosowanie modułów dołączanych do standardowej dystrybucji Perla.
- Nowy rozdział dotyczący przetwarzania dokumentów XML, światowego standardu wykorzystywanego w procesie tworzenia oraz wymiany dokumentów.
Książka "Perl. Receptury. Wydanie II" została określona mianem najbardziej przydatnej książki napisanej dotychczas o Perlu. Uczy ona programowania w najszybszy sposób: przedstawiając sposób rozwiązania danego zadania przez ekspertów, a następnie jego objaśnienie. Choć książka ta nie jest podręcznikiem języka Perl, pokazuje ona, jak należy programować w tym języku.
Osoby które kupowały "Perl. Receptury. Wydanie II", wybierały także:
- Hands-On Gradient Boosting with XGBoost and scikit-learn 142,38 zł, (29,90 zł -79%)
- Perl. Mistrzostwo w programowaniu 44,00 zł, (24,20 zł -45%)
- Wielkie umysły programowania. Jak myślą i pracują twórcy najważniejszych języków 79,00 zł, (47,40 zł -40%)
- Learning Perl. Making Easy Things Easy and Hard Things Possible. 7th Edition 169,00 zł, (118,30 zł -30%)
- 100 sposobów na Perl 39,00 zł, (29,25 zł -25%)
Spis treści
Perl. Receptury. Wydanie II -- spis treści
Przedmowa (17)
Wstęp (19)
Rozdział 1. Łańcuchy (31)
- 1.0. Wprowadzenie (31)
- 1.1. Dostęp do wybranej części łańcucha (37)
- 1.2. Ustalanie wartości domyślnych (40)
- 1.3. Zamiana wartości bez korzystania ze zmiennych tymczasowych (44)
- 1.4. Konwersja między znakami a liczbami (45)
- 1.5. Stosowanie nazwanych znaków Unicode (47)
- 1.6. Przetwarzanie łańcucha znak po znaku (48)
- 1.7. Odwracanie kolejności słów lub znaków w łańcuchu (51)
- 1.8. Traktowanie dołączonych znaków Unicode jako pojedynczych znaków (52)
- 1.9. Sprowadzanie łańcuchów zawierających znaki dołączone Unicode do postaci kanonicznej (54)
- 1.10. Traktowanie łańcuchów w Unicode jako oktetów (56)
- 1.11. Rozwijanie i kompresowanie tabulatorów (57)
- 1.12. Rozwijanie zmiennych we wprowadzanych łańcuchach (59)
- 1.13. Zmiana wielkości liter (61)
- 1.14. Formatowanie tytułów i nagłówków (63)
- 1.15. Interpolacja funkcji i wyrażeń w łańcuchach (66)
- 1.16. Tworzenie wcięć w dokumentach w miejscu (68)
- 1.17. Zmiana formatu akapitów (71)
- 1.18. Wyświetlanie znaków ucieczki (74)
- 1.19. Usuwanie odstępów z końca łańcucha (76)
- 1.20. Analizowanie danych oddzielonych przecinkami (78)
- 1.21. Zmienne niemodyfikowalne (81)
- 1.22. Dopasowywanie fonetyczne (83)
- 1.23. Program fixstyle (85)
- 1.24. Program psgrep (88)
Rozdział 2. Liczby (93)
- 2.0. Wprowadzenie (93)
- 2.1. Sprawdzanie czy łańcuch jest poprawną liczbą (95)
- 2.2. Zaokrąglanie liczb zmiennoprzecinkowych (98)
- 2.3. Porównywanie liczb zmiennoprzecinkowych (101)
- 2.4. Działania na ciągach liczb całkowitych (103)
- 2.5. Obsługa liczb rzymskich (105)
- 2.6. Generowanie liczb losowych (106)
- 2.7. Generowanie powtarzalnych sekwencji liczb losowych (107)
- 2.8. Generowanie liczb jeszcze bardziej losowych (109)
- 2.9. Generowanie liczb losowych z nierównomiernym rozkładem prawdopodobieństwa (110)
- 2.10. Działania trygonometryczne wykonywane w stopniach, nie w radianach (112)
- 2.11. Obliczanie bardziej zaawansowanych funkcji trygonometrycznych (113)
- 2.12. Obliczanie logarytmów (114)
- 2.13. Mnożenie macierzy (115)
- 2.14. Używanie liczb zespolonych (117)
- 2.15. Konwersja liczb binarnych, ósemkowych oraz szesnastkowych (118)
- 2.16. Umieszczanie kropek w liczbach (120)
- 2.17. Poprawne pisanie liczby mnogiej (121)
- 2.18. Program: obliczanie czynników pierwszych (123)
Rozdział 3. Data i czas (125)
- 3.0. Wprowadzenie (125)
- 3.1. Uzyskanie bieżącej daty (128)
- 3.2. Konwertowanie DMRGMS na liczbę sekund od początku Epoki (129)
- 3.3. Konwertowanie liczby sekund od początku Epoki na DMRGMS (131)
- 3.4. Dodawanie lub odejmowanie wartości od dat (132)
- 3.5. Obliczanie różnicy między dwiema datami (133)
- 3.6. Obliczanie dnia w tygodniu (miesiącu, roku) lub numeru tygodnia w roku (135)
- 3.7. Uzyskiwanie daty i czasu z łańcuchów (136)
- 3.8. Wyświetlanie daty (137)
- 3.9. Zegary wysokiej rozdzielczości (139)
- 3.10. Krótkie usypianie systemu (142)
- 3.11. Program: hopdelta (143)
Rozdział 4. Tablice (147)
- 4.0. Wprowadzenie (147)
- 4.1. Określanie listy w programie (149)
- 4.2. Wyświetlanie listy z przecinkami (150)
- 4.3. Zmiana rozmiaru tablicy (152)
- 4.4. Tworzenie rzadkich tablic (154)
- 4.5. Wykonywanie operacji na wszystkich elementach tablicy (157)
- 4.6. Wykonywanie operacji na wszystkich elementach tablicy poprzez odwołanie (161)
- 4.7. Usuwanie powtarzających się elementów z listy (162)
- 4.8. Wyszukiwanie elementów występujących tylko w jednej tablicy (164)
- 4.9. Obliczanie sumy, części wspólnej i różnicy list zawierających niepowtarzające się elementy (167)
- 4.10. Dołączanie jednej tablicy do drugiej (170)
- 4.11. Odwracanie tablicy (171)
- 4.12. Przetwarzanie wielu elementów tablicy jednocześnie (172)
- 4.13. Wyszukanie pierwszego elementu z listy, który spełnia określone kryteria (173)
- 4.14. Wyszukanie w tablicy wszystkich elementów spełniających określone kryterium (176)
- 4.15. Sortowanie numeryczne tablicy (178)
- 4.16. Sortowanie listy według obliczanego pola (179)
- 4.17. Implementacja list cyklicznych (183)
- 4.18. Ustawianie elementów tablicy w losowej kolejności (184)
- 4.19. Program: words (185)
- 4.20. Program: permute (187)
Rozdział 5. Tablice asocjacyjne (191)
- 5.0. Wprowadzenie (191)
- 5.1. Dodawanie elementów do tablicy asocjacyjnej (193)
- 5.2. Sprawdzanie obecności klucza w tablicy asocjacyjnej (194)
- 5.3. Tworzenie tablic asocjacyjnych z niezmiennymi kluczami lub wartościami (196)
- 5.4. Usuwanie elementów z tablicy asocjacyjnej (197)
- 5.5. Przeglądanie tablicy asocjacyjnej (199)
- 5.6. Wypisywanie zawartości tablicy asocjacyjnej (202)
- 5.7. Pobieranie elementów tablicy asocjacyjnej w kolejności ich wstawiania (204)
- 5.8. Tablice asocjacyjne z wieloma wartościami na klucz (205)
- 5.9. Odwracanie tablicy asocjacyjnej (207)
- 5.10. Sortowanie tablicy asocjacyjnej (209)
- 5.11. Łączenie tablic asocjacyjnych (210)
- 5.12. Wyszukiwanie wspólnych lub różniących się kluczy w dwóch tablicach asocjacyjnych (212)
- 5.13. Tablice asocjacyjne z odwołaniami (213)
- 5.14. Wstępne ustalanie rozmiaru tablicy asocjacyjnej (214)
- 5.15. Wyszukiwanie najczęściej występujących elementów (215)
- 5.16. Przedstawianie relacji pomiędzy danymi (216)
- 5.17. Program dutree (218)
Rozdział 6. Dopasowywanie wzorców (223)
- 6.0. Wprowadzenie (223)
- 6.1. Jednoczesne kopiowanie i podstawianie (229)
- 6.2. Dopasowywanie liter (231)
- 6.3. Dopasowywanie słów (233)
- 6.4. Komentowanie wyrażeń regularnych (234)
- 6.5. Wyszukiwanie n-tego wystąpienia dopasowania (237)
- 6.6. Dopasowywanie w obrębie wielu wierszy (240)
- 6.7. Odczytywanie rekordów z separatorem (243)
- 6.8. Wyodrębnianie linii z określonego zakresu (245)
- 6.9. Wykorzystanie znaków uniwersalnych powłoki jako wyrażeń regularnych (248)
- 6.10. Przyspieszanie dopasowań interpolowanych (249)
- 6.11. Sprawdzanie poprawności wzorca (252)
- 6.12. Uwzględnianie ustawień regionalnych we wzorcach (254)
- 6.13. Dopasowywanie przybliżone (255)
- 6.14. Dopasowywanie od miejsca, do którego poprzednio pasował wzorzec (257)
- 6.15. Zachłanne i niezachłanne dopasowania (259)
- 6.16. Wykrywanie powtarzających się wyrazów (262)
- 6.17. Dopasowywanie wzorców zagnieżdżonych (266)
- 6.18. Operacje AND, OR i NOT w pojedynczym wzorcu (267)
- 6.19. Dopasowywanie poprawnego adresu e-mail (272)
- 6.20. Dopasowywanie skrótów (274)
- 6.21. Program urlify (276)
- 6.22. Program tcgrep (277)
- 6.23. Przegląd interesujących wyrażeń regularnych (283)
Rozdział 7. Dostęp do plików (287)
- 7.0. Wprowadzenie (287)
- 7.1. Otwieranie pliku (297)
- 7.2. Otwieranie plików o nietypowych nazwach (300)
- 7.3. Rozwijanie znaku tyldy w nazwach plików (302)
- 7.4. Uwzględnianie nazw plików w komunikatach o błędach (304)
- 7.5. Przechowywanie uchwytów plików w zmiennych (305)
- 7.6. Tworzenie procedury przyjmującej uchwyty tak jak funkcje wbudowane (308)
- 7.7. Buforowanie otwartych wyjściowych uchwytów plików (309)
- 7.8. Jednoczesny zapis do wielu uchwytów plików (311)
- 7.9. Otwieranie i zamykanie deskryptorów plików przez ich numery (312)
- 7.10. Kopiowanie uchwytów plików (314)
- 7.11. Tworzenie plików tymczasowych (315)
- 7.12. Przechowywanie pliku w tekście programu (317)
- 7.13. Przechowywanie wielu plików w polu DATA (319)
- 7.14. Program filtra w stylu uniksowym (321)
- 7.15. Modyfikowanie pliku w miejscu z wykorzystaniem pliku tymczasowego (325)
- 7.16. Modyfikowanie pliku w miejscu za pomocą opcji -i (327)
- 7.17. Modyfikowanie pliku w miejscu bez pliku tymczasowego (329)
- 7.18. Blokowanie pliku (330)
- 7.19. Opróżnianie wyjścia (332)
- 7.20. Przeprowadzanie nie blokujących operacji wejścia-wyjścia (336)
- 7.21. Ustalanie liczby nie odczytanych bajtów (337)
- 7.22. Odczytywanie z wielu uchwytów plików bez blokowania (339)
- 7.23. Odczytywanie całego wiersza bez blokowania (341)
- 7.24. Program netlock (343)
- 7.25. Program lockarea (346)
Rozdział 8. Zawartość plików (351)
- 8.0. Wprowadzenie (351)
- 8.1. Odczytywanie linii ze znakami kontynuacji (358)
- 8.2. Zliczanie linii (paragrafów, rekordów) w pliku (360)
- 8.3. Przetwarzanie każdego słowa w pliku (361)
- 8.4. Odczytywanie linii lub paragrafów od końca pliku (363)
- 8.5. Odczytywanie pliku zwiększającego rozmiar (365)
- 8.6. Pobieranie losowej linii z pliku (367)
- 8.7. Losowa zmiana kolejności linii (368)
- 8.8. Odczytywanie wybranej linii z pliku (369)
- 8.9. Obsługa pól tekstowych o zmiennej długości (372)
- 8.10. Usuwanie ostatniej linii pliku (373)
- 8.11. Operacje na plikach binarnych (374)
- 8.12. Dostęp do dowolnego miejsca w pliku (375)
- 8.13. Uaktualnianie rekordu wewnątrz pliku (376)
- 8.14. Odczyt łańcucha z pliku binarnego (378)
- 8.15. Odczytywanie rekordów o stałej długości (379)
- 8.16. Odczytywanie plików konfiguracyjnych (381)
- 8.17. Sprawdzanie zabezpieczeń pliku (384)
- 8.18. Traktowanie pliku jak tablicy (386)
- 8.19. Określanie domyślnych warstw wejścia-wyjścia (387)
- 8.20. Czytanie i zapisywanie w formacie Unicode (388)
- 8.21. Konwersja plików tekstowych Microsoft do formatu Unicode (391)
- 8.22. Porównywanie zawartości dwóch plików (393)
- 8.23. Traktowanie łańcucha znakowego jak pliku (395)
- 8.24. Program tailwtmp (396)
- 8.25. Program tctee (396)
- 8.26. Program laston (398)
- 8.27. Program: proste indeksy plików (399)
Rozdział 9. Katalogi (401)
- 9.0. Wprowadzenie (401)
- 9.1. Odczytywanie i ustawianie znaczników czasowych (407)
- 9.2. Usuwanie pliku (408)
- 9.3. Kopiowanie lub przenoszenie pliku (409)
- 9.4. Wykrywanie dwóch nazw tego samego pliku (411)
- 9.5. Przetwarzanie wszystkich plików z katalogu (412)
- 9.6. Globbing, czyli pobieranie listy nazw plików zgodnych z wzorcem (414)
- 9.7. Rekursywne przetwarzanie wszystkich plików z katalogu (416)
- 9.8. Usuwanie katalogu wraz z zawartością (418)
- 9.9. Zmiana nazw plików (420)
- 9.10. Podział nazwy pliku na składowe (422)
- 9.11. Symboliczna reprezentacja praw dostępu do pliku (423)
- 9.12. Program symirror (426)
- 9.13. Program lst (426)
Rozdział 10. Procedury (431)
- 10.0. Wprowadzenie (431)
- 10.1. Dostęp do argumentów procedury (432)
- 10.2. Przekształcanie zmiennych w prywatne dla funkcji (434)
- 10.3. Tworzenie trwałych zmiennych prywatnych (436)
- 10.4. Określanie nazwy bieżącej funkcji (438)
- 10.5. Przekazywanie tablic i tablic asocjacyjnych przez odwołanie (440)
- 10.6. Wykrywanie kontekstu powrotnego (441)
- 10.7. Przekazywanie nazwanego parametru (442)
- 10.8. Pomijanie wybranych wartości zwracanych (444)
- 10.9. Zwracanie więcej niż jednej tablicy (445)
- 10.10. Zwracanie informacji o wystąpieniu błędu (446)
- 10.11. Prototypowanie funkcji (447)
- 10.12. Obsługa wyjątków (451)
- 10.13. Zapisywanie wartości globalnych (453)
- 10.14. Redefinicja funkcji (456)
- 10.15. Przechwytywanie wywołań niezdefiniowanych funkcji za pomocą AUTOLOAD (459)
- 10.16. Zagnieżdżanie procedur (460)
- 10.17. Tworzenie konstrukcji switch (461)
- 10.18. Program do sortowania poczty (464)
Rozdział 11. Odwołania oraz rekordy (469)
- 11.0. Wprowadzenie (469)
- 11.1. Tworzenie odwołań do tablic zwykłych (476)
- 11.2. Tworzenie tablic asocjacyjnych zawierających tablice zwykłe (479)
- 11.3. Tworzenie odwołań do tablic asocjacyjnych (480)
- 11.4. Tworzenie odwołań do funkcji (481)
- 11.5. Tworzenie odwołań do skalarów (484)
- 11.6. Tworzenie tablic zawierających odwołania do wartości skalarnych (485)
- 11.7. Używanie domknięć zamiast obiektów (487)
- 11.8. Tworzenie odwołań do metod (489)
- 11.9. Tworzenie rekordów (490)
- 11.10. Odczytywanie oraz zapisywanie rekordów z tablicy asocjacyjnej do plików tekstowych (492)
- 11.11. Wyświetlanie struktur danych (494)
- 11.12. Kopiowanie struktur danych (496)
- 11.13. Zapisywanie struktur danych na dysku (498)
- 11.14. Trwałe struktury danych (499)
- 11.15. Kopiowanie cyklicznych struktur danych przy użyciu słabych odwołań (501)
- 11.16. Program. Szkice (504)
- 11.17. Program. Drzewa binarne (507)
Rozdział 12. Pakiety, biblioteki oraz moduły (511)
- 12.0. Wprowadzenie (511)
- 12.1. Definiowanie interfejsu modułu (517)
- 12.2. Przechwytywanie błędów podczas stosowania require oraz use (520)
- 12.3. Opóźnianie wykonania instrukcji use do czasu uruchomienia programu (522)
- 12.4. Tworzenie zmiennych prywatnych w module (525)
- 12.5. Tworzenie funkcji prywatnych w module (527)
- 12.6. Określanie pakietu, z którego nastąpiło wywołanie (529)
- 12.7. Automatyzacja czyszczenia modułu (531)
- 12.8. Wykorzystywanie własnego katalogu z modułami (533)
- 12.9. Przygotowywanie modułu do rozpowszechniania (536)
- 12.10. Przyspieszanie wczytywania modułu przy użyciu SelfLoadera (539)
- 12.11. Przyspieszanie wczytywania modułu przy użyciu Autoloadera (540)
- 12.12. Ponowne definiowanie funkcji wbudowanych (541)
- 12.13. Ponowne definiowanie funkcji wbudowanych we wszystkich pakietach (544)
- 12.14. Informowanie o błędach oraz ostrzeżeniach w sposób podobny do funkcji wbudowanych (546)
- 12.15. Personalizacja komunikatów z ostrzeżeniami (548)
- 12.16. Niejawne odwołania do pakietów (552)
- 12.17. Stosowanie programu h2ph w celu przetłumaczenia plików nagłówkowych w języku C (554)
- 12.18. Używanie programu h2xs w celu tworzenia modułu korzystającego z kodu w języku C (557)
- 12.19. Tworzenie rozszerzeń w języku C przy użyciu modułu Inline::C (560)
- 12.20. Dokumentacja modułu przy użyciu programu Pod (562)
- 12.21. Budowanie oraz instalacja modułu CPAN (564)
- 12.22. Przykład. Szablon modułu (567)
- 12.23. Program. Odczytywanie wersji oraz opisów zainstalowanych modułów (568)
Rozdział 13. Klasy, obiekty oraz wiązania (573)
- 13.0. Wprowadzenie (573)
- 13.1. Tworzenie obiektu (583)
- 13.2. Usuwanie obiektu (585)
- 13.3. Zarządzanie danymi egzemplarza (587)
- 13.4. Zarządzanie danymi klasy (590)
- 13.5. Stosowanie klas w charakterze struktur (592)
- 13.6. Konstruktory klonujące (596)
- 13.7. Konstruktory kopiujące (598)
- 13.8. Pośrednie wywoływanie metod (599)
- 13.9. Określanie przynależności podklasy (602)
- 13.10. Tworzenie klasy używanej do dziedziczenia (604)
- 13.11. Dostęp do metod przesłoniętych (606)
- 13.12. Tworzenie metod atrybutów przy użyciu AUTOLOAD (608)
- 13.13. Kopiowanie cyklicznych struktur danych przy użyciu obiektów (611)
- 13.14. Przeciążanie operatorów (614)
- 13.15. Tworzenie magicznych zmiennych przy użyciu dowiązań (619)
Rozdział 14. Dostęp do bazy danych (627)
- 14.0. Wprowadzenie (627)
- 14.1. Tworzenie oraz używanie pliku DBM (630)
- 14.2. Usuwanie zawartości pliku DBM (632)
- 14.3. Konwersja pomiędzy plikami DBM (633)
- 14.4. Łączenie plików DBM (635)
- 14.5. Sortowanie dużych plików DBM (636)
- 14.6. Umieszczanie w pliku DBM złożonych danych (638)
- 14.7. Dane trwałe (640)
- 14.8. Zapisywanie wyników zapytania w pliku programu Excel lub pliku CSV (642)
- 14.9. Wykonywanie polecenia SQL przy użyciu DBI (643)
- 14.10. Zmiana znaczenia cudzysłowów (646)
- 14.11. Obsługa błędów bazy danych (647)
- 14.12. Wydajne powtarzanie zapytań (649)
- 14.13. Tworzenie zapytań w sposób programistyczny (651)
- 14.14. Odczytywanie liczby wierszy zwróconych przez zapytanie (653)
- 14.15. Stosowanie transakcji (654)
- 14.16. Wyświetlanie danych strona po stronie (656)
- 14.17. Wykonywanie zapytań do pliku CSV przy użyciu instrukcji SQL (658)
- 14.18. Wykorzystywanie poleceń SQL bez serwera bazy danych (659)
- 14.19. Program. ggh - program wyświetlający zawartość pliku historii programu Netscape (661)
Rozdział 15. Interakcja z użytkownikiem (665)
- 15.0. Wprowadzenie (665)
- 15.1. Analiza argumentów programu (667)
- 15.2. Sprawdzanie czy program został uruchomiony interaktywnie (670)
- 15.3. Czyszczenie zawartości ekranu (672)
- 15.4. Określanie rozmiaru terminala lub okna (673)
- 15.5. Zmiana koloru tekstu (674)
- 15.6. Odczytywanie z klawiatury pojedynczych znaków (676)
- 15.7. Użycie sygnału dźwiękowego terminala (677)
- 15.8. Stosowanie interfejsu POSIX termios (679)
- 15.9. Sprawdzanie oczekujących danych wejściowych (681)
- 15.10. Odczytywanie haseł (682)
- 15.11. Edycja danych wejściowych (683)
- 15.12. Zarządzanie wyglądem ekranu (684)
- 15.13. Nadzorowanie innego programu przy użyciu modułu Expect (687)
- 15.14. Tworzenie menu przy użyciu Tk (689)
- 15.15. Tworzenie okien dialogowych przy użyciu Tk (692)
- 15.16. Reagowanie na zdarzenia zmiany rozmiaru okna (695)
- 15.17. Usuwanie okna powłoki systemu DOS przy użyciu Perl/Tk dla środowiska Windows (697)
- 15.18. Tworzenie reprezentacji graficznej danych (698)
- 15.19. Tworzenie miniatur obrazów (699)
- 15.20. Dodawanie tekstu do obrazu (700)
- 15.21. Program: mały program korzystający z modułu Term::Cap (701)
- 15.22. Program: tkshufflepod (703)
- 15.23. Program: graphbox (705)
Rozdział 16. Zarządzanie procesami i komunikacja między nimi (707)
- 16.0. Wprowadzenie (707)
- 16.1. Zbieranie danych wyjściowych z programu (711)
- 16.2. Uruchamianie innego programu (713)
- 16.3. Zastępowanie wykonywanego programu innym (716)
- 16.4. Odczytywanie danych z innego programu oraz zapisywanie ich do innego programu (717)
- 16.5. Filtrowanie danych wyjściowych bieżącego programu (720)
- 16.6. Wstępne przetwarzanie danych wejściowych programu (722)
- 16.7. Odczytywanie standardowego wyjścia diagnostycznego (STDERR) (724)
- 16.8. Kontrolowanie wejścia oraz wyjścia danych innego programu (727)
- 16.9. Kontrolowanie wejścia, wyjścia oraz błędów innego programu (729)
- 16.10. Komunikacja pomiędzy powiązanymi procesami (731)
- 16.11. Tworzenie procesu przypominającego plik przy użyciu nazwanych potoków (737)
- 16.12. Współdzielenie zmiennych przez różne procesy (741)
- 16.13. Wypisywanie dostępnych sygnałów (743)
- 16.14. Wysyłanie sygnału (744)
- 16.15. Instalowanie procedury obsługi sygnału (745)
- 16.16. Tymczasowe przesłonięcie procedury obsługi sygnału (747)
- 16.17. Tworzenie procedury obsługi sygnału (748)
- 16.18. Przechwytywanie kombinacji Ctrl+C (751)
- 16.19. Zapobieganie występowaniu procesów zombie (752)
- 16.20. Blokowanie sygnałów (755)
- 16.21. Obsługa przekroczenia czasu operacji (757)
- 16.22. Przekształcanie sygnałów do postaci błędów krytycznych (759)
- 16.23. Program sigrand (760)
Rozdział 17. Gniazda (765)
- 17.0. Wprowadzenie (765)
- 17.1. Pisanie klienta TCP (768)
- 17.2. Pisanie serwera TCP (770)
- 17.3. Komunikacja za pośrednictwem protokołu TCP (773)
- 17.4. Tworzenie klienta UDP (777)
- 17.5. Tworzenie serwera UDP (779)
- 17.6. Korzystanie z gniazd w domenie uniksowej (781)
- 17.7. Identyfikowanie rozmówcy po drugiej stronie gniazda (783)
- 17.8. Ustalanie własnej nazwy i adresu (785)
- 17.9. Zamykanie gniazda po rozwidleniu procesu (786)
- 17.10. Pisanie dwukierunkowych klientów (788)
- 17.11. Rozwidlanie serwerów (790)
- 17.12. Rozwidlanie serwera z wyprzedzeniem (791)
- 17.13. Nie rozwidlające się serwery (794)
- 17.14. Serwer wielozadaniowy korzystający z wątkowości (798)
- 17.15. Jak POE pomaga pisać serwer wielowątkowy (799)
- 17.16. Pisanie serwera działającego pod kilkoma adresami IP (802)
- 17.17. Przygotowywanie serwera działającego jako demon (803)
- 17.18. Ponowne uruchamianie serwera na życzenie (806)
- 17.19. Zarządzanie wieloma strumieniami nadchodzących danych na raz (808)
- 17.20. Przykładowy program: backsniff (811)
- 17.21. Przykładowy program: fwdport (812)
Rozdział 18. Usługi internetowe (817)
- 18.0. Wprowadzenie (817)
- 18.1. Podstawy przeglądania informacji przechowywanych na serwerach DNS (819)
- 18.2. Klient FTP (823)
- 18.3. Wysyłanie poczty (826)
- 18.4. Odczytywanie i wysyłanie nowych wiadomości w sieci Usenet (830)
- 18.5. Odczytywanie poczty za pośrednictwem serwera POP3 (832)
- 18.6. Symulacja polecenia telnet wewnątrz programu (835)
- 18.7. Sprawdzanie działania komputera za pomocą programu ping (838)
- 18.8. Sięganie do serwera LDAP (840)
- 18.9. Wysyłanie poczty z załącznikami (843)
- 18.10. Wydobywanie załączników z poczty (847)
- 18.11. Pisanie serwera XML-RPC (849)
- 18.12. Pisanie klienta XML-RPC (851)
- 18.13. Pisanie serwera SOAP (853)
- 18.14. Pisanie klienta SOAP (854)
- 18.15. Przykładowy program: rfrm (855)
- 18.16. Przykładowy program: expn i vrfy (857)
Rozdział 19. Programowanie CGI (861)
- 19.0. Wprowadzenie (861)
- 19.1. Pisanie skryptu CGI (866)
- 19.2. Przekierowywanie wiadomości o błędach (869)
- 19.3. Naprawianie błędu 500 Server Error (871)
- 19.4. Pisanie bezpiecznego programu CGI (875)
- 19.5. Unikanie sekwencji sterujących powłoki podczas wykonywania poleceń (880)
- 19.6. Formatowanie list i tabel za pomocą skrótów HTML (883)
- 19.7. Kierowanie do innego adresu (885)
- 19.8. Wykrywanie błędów w kodzie komunikacji HTTP (887)
- 19.9. Zarządzanie cookies (889)
- 19.10. Tworzenie kontrolek przechowujących wprowadzone wartości (892)
- 19.11. Pisanie skryptu CGI obsługującego wiele stron WWW (893)
- 19.12. Zapisywanie formularza w pliku lub potoku pocztowym (896)
- 19.13. Przykładowy program: chemiserie (898)
Rozdział 20. Sieć WWW od strony klienta (903)
- 20.0. Wprowadzenie (903)
- 20.1. Pobieranie zasobu o określonym adresie URL za pomocą skryptu Perla (905)
- 20.2. Automatyzacja zatwierdzania formularzy (907)
- 20.3. Wydobywanie adresów URL (909)
- 20.4. Konwertowanie tekstu ASCII na HTML (912)
- 20.5. Konwertowanie dokumentu HTML na tekst ASCII (913)
- 20.6. Wydobywanie lub usuwanie znaczników HTML (914)
- 20.7. Odnajdywanie w dokumencie HTML łączy, które już nie działają (917)
- 20.8. Odnajdywanie łączy do ostatnio aktualizowanych stron (918)
- 20.9. Generowanie kodu HTML przy użyciu szablonów (920)
- 20.10. Tworzenie zwierciadlanych kopii stron WWW (923)
- 20.11. Tworzenie robota (924)
- 20.12. Rozkładanie pliku dziennika serwera WWW na rekordy (925)
- 20.13. Analizowanie dzienników serwera WWW (927)
- 20.14. Korzystanie z cookies (930)
- 20.15. Pobieranie stron chronionych hasłem (931)
- 20.16. Pobieranie stron WWW w protokole https:// (932)
- 20.17. Wznawianie żądania GET protokołu HTTP (932)
- 20.18. Analiza kodu HTML (934)
- 20.19. Wydobywanie danych z tabel HTML (937)
- 20.20. Przykładowy program htmlsub (940)
- 20.21. Przykładowy program: hrefsub (941)
Rozdział 21. mod_perl (943)
- 21.0. Wprowadzenie (943)
- 21.1. Uwierzytelnianie (949)
- 21.2. Ustawianie Cookies (951)
- 21.3. Sięganie do wartości cookie (952)
- 21.4. Kierowanie przeglądarki pod inny adres (954)
- 21.5. Badanie nagłówków (955)
- 21.6. Sięganie do parametrów formularza (956)
- 21.7. Odbieranie plików ładowanych na serwer (957)
- 21.8. Przyśpieszanie dostępu do baz danych (959)
- 21.9. Dostosowanie działania dzienników Apache do własnych potrzeb (960)
- 21.10. Przezroczyste przechowywanie informacji w adresach URL (962)
- 21.11. Komunikacja między mod_perl a PHP (964)
- 21.12. Przerabianie kodu skryptów CGI na kod mod_perl (965)
- 21.13. Wspólne korzystanie z informacji przez różne procedury obsługi (966)
- 21.14. Ponowne ładowanie zmienionych modułów (968)
- 21.15. Ocena wydajności aplikacji mod_perl (969)
- 21.16. Korzystanie z szablonów z pomocą modułu HTML::Mason (970)
- 21.17. Korzystanie z szablonów z pomocą zestawu Template Toolkit (976)
Rozdział 22. XML (983)
- 22.0. Wprowadzenie (983)
- 22.1. Przekształcanie dokumentów XML do postaci struktur danych (993)
- 22.2. Analiza składniowa dokumentów XML przy użyciu reprezentacji drzewiastej DOM (995)
- 22.3. Analiza składniowa dokumentów XML przy użyciu zdarzeń interfejsu SAX (998)
- 22.4. Wprowadzanie prostych zmian do elementów lub ich zawartości (1002)
- 22.5. Sprawdzanie poprawności dokumentu XML (1004)
- 22.6. Odszukiwanie elementów oraz ich zawartości w dokumencie XML (1008)
- 22.7. Przetwarzanie transformacji arkuszy stylów XML (1010)
- 22.8. Analiza dokumentów o rozmiarze przekraczającym ilość dostępnej pamięci systemowej (1013)
- 22.9. Odczytywanie oraz zapisywanie plików RSS (1015)
- 22.10. Tworzenie dokumentu XML (1018)
Skorowidz (1021)