
Książka mówi o tym, jak osiągać wyniki. Ściślej, mówi o tym, jak osiągać je szybciej, skuteczniej i z większą przyjemnością, zwłaszcza, gdy mamy pracę, która polega na tworzeniu i utrzymaniu użytecznych kolekcji informacji World Wide Web. Co ważniejsze jednak, książka pokazuje, jak dokonać tych rzeczy przy użyciu języka programowania Perl.
W najbardziej ogólnym sensie książka dotyczy tego, jak opuścić świat użytkowników i wyruszyć do nowego świata programistów komputerowych. Droga, która tam wiedzie, składa się z wielu kolejnych etapów lecz niniejsza książka nie ma zamiaru prowadzić Was do samego końca. Skupia się tylko na pierwszych kilku krokach, starając się Was przeprowadzić jak najbezpieczniej przez najbardziej oczywiste pułapki. To, jak daleko dotrzecie, zależy od Waszych potrzeb i zdolności. Książka na pewno pomaga rozpocząć tę podróż.

Rozdział 1. Porządkujemy narzędzia (17)
- Oprogramowanie o źródłach otwartych i zamkniętych (17)
- Oceniamy dostawcę hostingu (19)
- Możliwości wyboru hostingu (22)
- Zaczynamy pracę z protokołami SSH i TELNET (23)
- Poznajcie shell Unixa (25)
- Wykrywamy usterki Sieci (33)
- Odpowiedni edytor tekstowy (37)
- Znajdujemy Perl w systemie (41)
- Tworzymy skrypt "Hello, world!" (42)
- Sprawa ./ (46)
- Prawa dostępu do pliku w systemie Unix (47)
- Uruchamianie (i debugging) skryptu (50)
- Dokumentacja Perl (52)
- Zmienne Perl (53)
- Jeszcze o cytowaniu (57)
- "Hello world!" jako skrypt CGI (58)
- Sprawdzamy obecność CGI.pm (65)
- Tworzymy formularz HTML (67)
- Atrybut ACTION w znaczniku <FORM> (70)
- Skrypt mail_form.cgi (71)
- Ostrzeżenia od opcji -w Perla (72)
- Sekcja konfiguracyjna (73)
- Wywołujemy CGI.pm (74)
- Pętle foreach (75)
- Instrukcje if (76)
- Uchwyty plików i wyjście do potoku (81)
- Instrukcje die (82)
- Wyprowadzamy wiadomość (83)
- Testujemy skrypt (84)
- Zachowujemy ostrożność (87)
- Zmieniamy nazwy plików (88)
- Modyfikujemy atrybuty HREF (99)
- Zapisujemy zmodyfikowane pliki na dysk (106)
- Problem "brudnych danych" (109)
- Wymagane własności (111)
- Uzyskujemy dane (111)
- Parsing danych (113)
- Wyprowadzamy próbkę danych (127)
- Zwiększamy przenikliwość skryptu (130)
- Parsing pliku kategorii (133)
- Testujemy skrypt ponownie (136)
- Zmodyfikowany skrypt make_exhibit.plx (143)
- Zmiany w &parse_exhibitor (154)
- Dodajemy kategorie do firmowych list (157)
- Tworzymy kartoteki (160)
- Generujemy strony HTML (161)
- Generujemy stronę główną (169)
- Ograniczniki (171)
- Modyfikatory końcowe (172)
- Wzorzec wyszukiwania (172)
- Robimy rundkę (175)
- Myślimy jak komputer (177)
- Struktura pliku dziennika (183)
- Konwersja adresów IP (185)
- Skrypt analizy dziennika (189)
- Inne formaty pliku dziennika (193)
- Przechowujemy dane (196)
- Struktura danych "wizyty" (197)
- Zmiany formatu daty(czasu) (201)
- Użycie modułu Time::Local (202)
- Zapamiętanie zmian formatu daty (204)
- Zasięg w anonimowym bloku (206)
- Użycie bloku BEGIN (207)
- Nowe procedury &new_visit i &add_to_visit (209)
- Generujemy raport (212)
- Wyświetlamy szczegóły każdej wizyty (216)
- Najbardziej popularne strony (222)
- Ciekawsze sortowanie (223)
- Wysyłamy raport pocztą (230)
- Wykorzystujemy cron (238)
- Utrzymanie odnośników (243)
- Znajdujemy pliki z File::Find (244)
- Szukamy odnośników (247)
- Ekstrakcja (249)
- Składamy wszystkie części w całość (252)
- Korzystamy z CPAN (261)
- Sprawdzamy zdalne odnośniki (266)
- Właściwy program do sprawdzania odnośników (272)
- Skrypt obsługujący książkę gości (285)
- Tryb zagrożenia (289)
- Wstępne prace nad książką gości (290)
- Unieszkodliwianie przez odniesienia wsteczne (295)
- Zajmowanie pliku (296)
- Prawa dostępu do pliku książki gości (300)
- Pobieramy i kompilujemy SWISH-E (303)
- Indeksujemy w SWISH-E (307)
- Wywołujemy SWISH-E z wiersza poleceń (309)
- Wywołujemy SWISH-E przez skrypt CGI (310)
- Używamy szablonów (317)
- Wczytujemy uzupełnienia z powrotem (321)
- Przepisujemy całą witrynę (324)
- Koncepcja docbase (333)
- Architektura witryny CyberFair (334)
- Struktura danych skryptu (344)
- Stosujemy Data::Dumper (345)
- Tworzymy anonimowe hashe i tablice (346)
- Generujemy odnośniki automatycznie (347)
- Wstawiamy odnośniki (350)
- Prosty szablon modułu (351)
- Instalujemy moduł (355)
- Moduł Cyberfair::Page (356)
- Po co dodawać strony za pomocą skryptu CGI (361)
- Skrypt do tworzenia dokumentów HTML (361)
- Sterowanie wielostopniowym skryptem CGI (371)
- Użycie odnośników z parametrem (372)
- Budujemy formularz (373)
- Ogłaszamy strony ze skryptu CGI (377)
- Wywołujemy polecenia zewnętrzne poprzez system i Backtrics (379)
- Warunki wyścigu (380)
- Zajmowanie plików (381)
- Dodajemy sprawdzanie odnośników (383)
- Instalujemy WWW::Search (386)
- Program dla wyników pojedynczego wyszukiwania (387)
- Program dla wyników wielokrotnego wyszukiwania (392)
- Funkcja map (398)
- Bezstanowe transakcje (402)
- Identyfikacja poszczególnych użytkowników (402)
- Podstawowe uwierzytelnianie (403)
- Automatyczna rejestracja użytkowników (406)
- Zapisujemy dane w serwerze (408)
- Skrypt rejestracji (414)
- Skrypt weryfikacji (428)
- Jak przechowywać dane (435)
- Funkcja tie (436)
- Przykład skryptu DBM (437)
- Zajmowanie z blokowaniem i bez blokowania (438)
- Przechowujemy dane wielopoziomowe w plikach DBM (439)
- Skrypt rejestracji z użyciem MLDBM (440)
- Skrypt weryfikacji z użyciem MLDBM (446)
- Administracja systemem Unix (455)
- Programowanie (456)
- Administracja serwerem Apache i mod_perl (460)
- Relacyjne bazy danych (460)
- Apel (462)