Подробности
Perl Cookbook представлява изчерпателен сборник от проблеми, решения и примери от практиката, предназначени за всеки програмист на Perl. Първото издание на Perl Cookbook беше публикувано през 1998 година и спечели всеобщо признание. Тя придоби славата не само на една от най-добрите книги за Perl, но и на една от най-добрите книги, посветени на език за програмиране въобще. Perl Cookbook постави началото на нов тип книги: не просто набор от съвети и трикове, а книга, която описва нюансите на програмирането с помощта на проблеми и примери от реалния живот.
Второто издание на Perl Cookbook е разширено и покрива не само новите механизми на Perl, но също така и новите технологии, които се появиха след публикуването на първото издание. Бяха добавени две нови глави, а много от съществуващия материал беше разширен. Бяха добавени 80 нови рецепти, а повече от 100 стари рецепти бяха обновени с нови модули или техники.
Както първото издание на Perl Cookbook, настоящата книга разглежда манипулациите с данни (низове, числа, дати, масиви и хешове), входо-изходните операции с файлове, регулярните изрази, модулите, препратките, обектите, структурите от данни, работата с бази данни, графичните приложения, междупроцесните комуникации, сигурността, програмирането в Интернет, CGI и LWP. Второто издание включва освен това и:
• Описание на работата със символите в Unicode в Perl, особено във връзка с манипулирането на низове, регулярни изрази и файлове.
• Глава, посветена на програмирането с mod_perl – модул на Apache, вграждащ ядрото на Perl в уеб сървъра Apache, подобрявайки драстично скоростта на операциите, които иначе би трябвало да бъдат извършени чрез CGI.
• Нови и обновени рецепти, покриващи модули, които сега са включени в стандартната дистрибуция на Perl.
• Нова глава, посветена на работата с XML – световно утвърдения стандарт, използван за представяне и обмен на документи и информация, независимо от крайния им формат.
Хората наричат Perl Cookbook най-полезната книга за Perl. Тя описва програмирането по най-ефективния начин: като показва какво правят експертите и след това обяснява защо тези решения работят. Perl Cookbook не е книга за езика за програмиране Perl; тя е книга за това как се програмира на Perl.
Том I
Предисловие .............................................................................................. xvii
Предговор .................................................................................................... xix
1. Низове ...................................................................................................... 1
1.1 Достъп до поднизове.......................................................................... 7
1.2 Задаване на стойности по подразбиране.......................................... 10
1.3 Размяна на стойности без използване на временни променливи...... 13
1.4 Преобразуване между символи и числа............................................ 14
1.5 Използване на именувани символи от Unicode................................. 16
1.6 Обработване на низ символ по символ............................................. 18
1.7 Обръщане на думите или на символите в низ ................................. 20
1.8 Третиране на комбинирани символи от Unicode
като единични символи................................................................... 22
1.9 Привеждане на низове с комбинирани символи в каноничен вид.... 23
1.10 Третиране на низ в Unicode като октети.......................................... 25
1.11 Заместване и компресиране на табулации........................................ 26
1.12 Заместване на променливи в потребителски вход............................ 28
1.13 Промяна на начина на изписване на низ.......................................... 30
1.14 Правилно изписване на заглавия...................................................... 32
1.15 Интерполиране на функции и изрази в рамките на низ................... 35
1.16 Подравняване на документи here..................................................... 37
1.17 Преформатиране на абзаци.............................................................. 41
1.18 Екраниране на символи.................................................................... 43
1.19 Премахване на интервалите в краищата на низ................................ 45
1.20 Обработване на разделени със запетая данни................................... 47
1.21 Константни променливи.................................................................. 50
1.22 Съгласуване на звукови шаблони..................................................... 52
1.23 Програма: fixstyle.............................................................................. 54
1.24 Програма: psgrep............................................................................... 57
2. Числа ...................................................................................................... 62
2.1. Проверка дали даден низ представлява валидно число.................... 64
2.2 Закръгляне на числа с плаваща запетая............................................ 67
2.3 Сравняване на числа с плаваща запетая........................................... 70
2.4 Работа с поредици от цели числа..................................................... 72
2.5 Работа с римски числа..................................................................... 74
2.6 Генериране на случайни числа......................................................... 75
2.7 Генериране на повтарящи се последователности
от случайни числа............................................................................ 76
2.8 Генериране на още по-случайни числа............................................. 77
2.9 Генериране на случайни числа с неравномерно разпределение........ 78
2.10 Тригонометрични операции в градуси, не в радиани....................... 80
2.11 Пресмятане на други тригонометрични функции............................. 82
2.12 Пресмятане на логаритми................................................................. 83
2.13 Умножаване на матрици.................................................................. 84
2.14 Операции с комплексни числа......................................................... 86
2.15 Преобразуване на двоични, осмични и шестнадесетични числа..... 87
2.16 Поставяне на запетаи в числа........................................................... 89
2.17 Отпечатване на правилни множествени форми................................ 90
2.18 Програма: Разлагане на прости множители...................................... 92
3. Дати и часове ........................................................................................ 94
3.1 Намиране на днешната дата............................................................. 96
3.2 Преобразуване на DMYHMS в секунди след Епохата...................... 98
3.3 Преобразуване на секунди след Епохата в DMYHMS...................... 99
3.4 Добавяне или изваждане от дата.................................................... 100
3.5 Разлика между две дати.................................................................. 101
3.6 Ден от седмицата/месеца/годината или номер на седмицата.......... 103
3.7 Извличане на дати и часове от низове............................................ 104
3.8 Отпечатване на дата....................................................................... 105
3.9 Фини хронометри........................................................................... 107
3.10 Кратки паузи.................................................................................. 110
3.11 Програма: hopdelta.......................................................................... 111
4. Масиви ................................................................................................. 114
4.1 Задаване на списък в програма....................................................... 115
4.2 Отпечатване на списък със запетаи................................................ 117
4.3 Променяне на размера на масив..................................................... 119
4.4 Реализиране на разреден масив...................................................... 121
4.5 Обхождане на масив....................................................................... 124
4.6 Обхождане на масив чрез препратка............................................... 127
4.7 Извличане на уникалните елементи от списък............................... 129
4.8 Откриване на елементи от масив, които не присъстват в друг....... 131
4.9 Съставяне на обединение, сечение или разлика
на списъци с уникални елементи................................................... 134
4.10 Прилепяне на масив към друг......................................................... 136
4.11 Обръщане на масив........................................................................ 137
4.12 Обработване на няколко елемента от масив................................... 138
4.13 Откриване на първия елемент от списък,
който удовлетворява дадено условие............................................. 140
4.14 Намиране на всички елементи от масив,
които удовлетворяват даден критерий........................................... 142
4.15 Сортиране на числов масив............................................................ 144
4.16 Сортиране на списък по изчислимо поле....................................... 145
4.17 Реализиране на цикличен списък................................................... 149
4.18 Случайно разбъркване на масив..................................................... 150
4.19 Програма: words.............................................................................. 151
4.20 Програма: permute........................................................................... 153
5. Хешове ................................................................................................. 157
5.1 Добавяне на елемент към хеш......................................................... 159
5.2 Проверка дали даден ключ съществува в хеш................................ 160
5.3 Създаване на хеш с непроменливи ключове или стойности........... 162
5.4 Изтриване от хеш........................................................................... 163
5.5 Обхождане на хеш.......................................................................... 165
5.6 Отпечатване на хеш........................................................................ 167
5.7 Извличане на елементи от хеш в реда на вмъкването им................ 169
5.8 Хешове с няколко стойности за един ключ.................................... 170
5.9 Обръщане на елементите в хеш...................................................... 172
5.10 Сортиране на хеш........................................................................... 174
5.11 Сливане на хешове......................................................................... 175
5.12 Откриване на еднакви или различни ключове в два хеша.............. 177
5.13 Хеширане на препратки................................................................. 178
5.14 Променяне на размера на хеш......................................................... 179
5.15 Откриване на най-често срещаното нещо....................................... 180
5.16 Представяне на връзки между данни.............................................. 180
5.17 Програма: dutree............................................................................. 182
6. Съгласуване с шаблони .................................................................... 187
6.1 Едновременно копиране и заменяне............................................... 193
6.2 Откриване на букви....................................................................... 194
6.3 Откриване на думи......................................................................... 196
6.4 Поставяне на коментари в регулярни изрази.................................. 198
6.5 Откриване на N-то срещане на даден низ....................................... 201
6.6 Съгласуване в многоредов низ....................................................... 204
6.7 Четене на разграничени записи...................................................... 207
6.8 Извличане на поредица от редове.................................................. 209
6.9 Съгласуване с глобални символи за заместване
като с регулярни изрази.................................................................. 212
6.10 Ускоряване на интерполираните съгласувания.............................. 213
6.11 Проверка за валиден шаблон.......................................................... 215
6.12 Съобразяване с регионалните настройки в регулярни изрази......... 218
6.13 Съгласуване на приближения......................................................... 219
6.14 Съгласуване от позицията на последния използван шаблон........... 220
6.15 Лакомо и нелакомо съгласуване..................................................... 222
6.16 Засичане на двойни думи............................................................... 225
6.17 Откриване на вложени шаблони.................................................... 229
6.18 Изразяване на AND, OR и NOT в един шаблон.............................. 230
6.19 Откриване на валидни пощенски адреси........................................ 235
6.20 Съгласуване на съкращения........................................................... 237
6.21 Програма: urlify............................................................................... 239
6.22 Програма: tcgrep.............................................................................. 240
6.23 Готови регулярни изрази................................................................ 247
7. Достъп до файлове ............................................................................. 251
7.1 Отваряне на файл........................................................................... 261
7.2 Отваряне на файлове с необичайни имена..................................... 264
7.3 Заместване на тилди в имена на файлове....................................... 266
7.4 Поставяне на имена на файлове в съобщенията
за грешка на Perl............................................................................. 267
7.5 Съхраняване на файлови манипулатори в променливи.................. 268
7.6 Създаване на подпрограма, приемаща файлов манипулатор
подобно на вградените функции.................................................... 272
7.7 Кеширане на отворени изходни файлови манипулатори................ 273
7.8 Изпращане на данни едновременно към множество
файлови манипулатори ................................................................. 274
7.9 Отваряне и затваряне на файлови дескриптори по номер.............. 276
7.10 Копиране на файлови манипулатори.............................................. 277
7.11 Създаване на временни файлове.................................................... 279
7.12 Съхраняване на файл в текста на програмата ви............................ 281
7.13 Съхраняване на няколко файла в областта DATA........................... 282
7.14 Създаване на програма, подобна на филтрите в Unix..................... 284
7.15 Модифициране на файл на място чрез временно копие................. 289
7.16 Модифициране на файл на място чрез ключа -i............................ 2901
7.17 Модифициране на файл на място без временен файл..................... 292
7.18 Заключване на файл....................................................................... 293
7.19 Извеждане на всички данни от буфер............................................ 296
7.20 Извършване на неблокиращи входно-изходни операции................ 299
7.21 Определяне на броя на непрочетените байтове.............................. 301
7.22 Четене от няколко файлови манипулатора без блокиране.............. 303
7.23 Четене на цял ред без блокиране.................................................... 305
7.24 Програма: netlock............................................................................ 307
7.25 Програма: lockarea.......................................................................... 310
8. Съдържание на файлове .................................................................. 316
8.1 Четене на редове със символи за пренасяне................................... 323
8.2 Преброяване на редовете (или на абзаците или
записите) във файл......................................................................... 324
8.3 Обработване на всяка дума в даден файл....................................... 325
8.4 Четене на редове или абзаци от файл отзад напред........................ 327
8.5 Четене на постоянно нарастващ файл............................................ 329
8.6 Четене на случайно избран ред от файл......................................... 331
8.7 Разбъркване на всички редове........................................................ 332
8.8 Прочитане на определен ред от файл............................................. 333
8.9 Обработване на текстови полета с варираща дължина................... 335
8.10 Изтриване на последния ред от файл............................................ 336
8.11 Обработване на двоични файлове.................................................. 337
8.12 Извършване на входно-изходни операции с произволен достъп..... 338
8.13 Обновяване на файл с произволен достъп...................................... 339
8.14 Четене на низ от двоичен файл...................................................... 341
8.15 Четене на записи с фиксирана дължина......................................... 342
8.16 Четене на конфигурационни файлове............................................ 344
8.17 Проверка за надеждност на файл.................................................... 346
8.18 Третиране на файл като масив....................................................... 349
8.19 Настройване на стандартните входно-изходни слоеве.................... 350
8.20 Четене и писане на Unicode от файлов манипулатор...................... 351
8.21 Преобразуване на текстови файлове на Microsoft в Unicode........... 354
8.22 Сравняване на съдържанието на два файла.................................... 356
8.23 Третиране на низ като файл........................................................... 357
8.24 Програма: tailwtmp.......................................................................... 358
8.25 Програма: tctee................................................................................ 359
8.26 Програма: laston.............................................................................. 361
8.27 Програма: Индексиране на файлове............................................... 362
9. Директории ......................................................................................... 364
9.1 Получаване и променяне на дата и час........................................... 370
9.2. Изтриване на файл......................................................................... 371
9.3 Копиране или преместване на файл............................................... 372
9.4 Разпознаване на различни имена на един файл.............................. 373
9.5 Обработване на всички файлове в една директория....................... 375
9.6 Глобално избиране на имена на файлове, удовлетворяващи
определен шаблон.......................................................................... 377
9.7 Рекурсивно обработване на файловете в директория..................... 378
9.8 Премахване на директория и на нейното съдържание.................... 381
9.9 Преименуване на файлове.............................................................. 383
9.10 Разделяне на име на файл на съставните му части......................... 384
9.11 Работа със символни файлови права вместо
с осмични стойности...................................................................... 386
9.12 Програма: symirror.......................................................................... 388
9.13 Програма: lst................................................................................. 3891
10. Подпрограми ..................................................................................... 393
10.1 Достъп до аргументите на подпрограма.......................................... 394
10.2 Създаване на локални променливи във функция............................ 396
10.3 Създаване на постоянни локални променливи.............................. 398
10.4 Определяне на името на текущата функция................................... 400
10.5 Подаване на препратки към масиви и хешове................................ 402
10.6 Определяне на контекста на връщания резултат............................ 403
10.7 Подаване по именуван параметър.................................................. 404
10.8 Пропускане на избрани връщани стойности.................................. 405
10.9 Връщане на повече от един масив или хеш.................................... 406
10.10 Връщане на неуспех....................................................................... 407
10.11 Прототипи на функции.................................................................. 408
10.12 Обработване на изключения........................................................... 412
10.13 Запазване на глобални стойности................................................... 414
10.14 Предефиниране на функция........................................................... 417
10.15 Улавяне на обръщения към недефинирани
функции чрез AUTOLOAD............................................................. 420
10.16 Вграждане на подпрограми............................................................. 421
10.17 Съставяне на разклоняваща се условна конструкция..................... 422
10.18 Програма: сортиране на поща......................................................... 425
11. Препратки и записи ....................................................................... 429
11.1 Работа с препратки към масиви...................................................... 436
11.2 Създаване на хешове от масиви...................................................... 438
11.3 Работа с препратки към хешове...................................................... 439
11.4 Работа с препратки към функции................................................... 440
11.5 Работа с препратки към скалари..................................................... 443
11.6 Създаване на масиви от препратки към скалари............................. 444
11.7 Използване на програмни затваряния вместо обекти...................... 446
11.8 Създаване на препратки към методи.............................................. 447
11.9 Съставяне на записи....................................................................... 448
11.10 Четене и писане на записи от хеш в текстови файлове.................. 451
11.11 Отпечатване на структури от данни............................................... 452
11.12 Копиране на структури от данни.................................................... 454
11.13 Съхраняване на структури от данни на диска................................. 455
11.14 Прозрачно съставяне на постоянни структури от данни................. 457
11.15 Работа с циклични структури от данни,
използващи слаби препратки......................................................... 458
11.16 Програма: Описания....................................................................... 462
11.17 Програма: Двоични дървета............................................................ 464
Том II
12. Пакети, библиотеки и модули ...................................................... 469
12.1 Дефиниране на интерфейс на модул.............................................. 474
12.2 Прихващане на грешки, предизвикани от require или use............... 477
12.3 Обработване на use по време на изпълнение.................................. 478
12.4 Създаване на скрити променливи в модул..................................... 481
12.5 Създаване на скрити функции в модул.......................................... 484
12.6 Определяне на пакета на извикващия код...................................... 485
12.7 Автоматизиране на почистването на данни в модул....................... 487
12.8 Задаване на директория за личните ви модули............................... 489
12.9 Подготвяне на модул за разпространение....................................... 492
12.10 Ускоряване на зареждането на модули чрез SelfLoader................... 494
12.11 Ускоряване на зареждането на модули чрез AutoLoader................. 495
12.12 Предефиниране на вградени функции............................................ 496
12.13 Предефиниране на вградена функция във всички пакети.............. 498
12.14 Съобщаване на грешки и предупреждения подобно на
вградените функции....................................................................... 501
12.15 Настройване на предупрежденията................................................ 502
12.16 Неявно използване на пакети......................................................... 506
12.17 Употреба на h2ph за преобразуване на файлове
за включване от C.......................................................................... 508
12.18 Създаване на модул с код на C с помощта на h2xs......................... 511
12.19 Създаване на разширения на C чрез Inline::C.................................. 514
12.20 Документиране на модул с Pod...................................................... 515
12.21 Компилиране и инсталиране на модул от CPAN............................ 518
12.22 Пример: шаблон за модул............................................................... 521
12.23 Програма: откриване на версиите и на описанията
на инсталираните модули............................................................... 522
13. Класове, обекти и връзки .............................................................. 527
13.1 Създаване на обект......................................................................... 535
13.2 Унищожаване на обект................................................................... 537
13.3 Управление на обектни данни........................................................ 539
13.4 Управление на данни на клас......................................................... 542
13.5 Използване на класове като структури........................................... 544
13.6 Конструктори за клониране............................................................ 548
13.7 Копиращи конструктори................................................................ 549
13.8 Индиректно извикване на методи.................................................. 551
13.9 Определяне на принадлежността на подклас.................................. 553
13.10 Създаване на наследим клас........................................................... 554
13.11 Достъп до предефинирани методи.................................................. 556
13.12 Генериране на атрибутни методи чрез AUTOLOAD....................... 558
13.13 Циклични структури...................................................................... 561
13.14 Натоварени оператори.................................................................... 564
13.15 Създаване на магически променливи с tie...................................... 570
14. Бази Данни ....................................................................................... 578
14.1 Създаване и изполване на DBM-файлове....................................... 580
14.2 Изпразване на DBM-файл.............................................................. 583
14.3 Преобразуване между различни DBM-файлове.............................. 583
14.4 Обединяване на DBM-файлове....................................................... 585
14.5 Сортиране на големи DBM-файлове............................................... 586
14.6 Сортиране на сложни данни в DBM-файл...................................... 587
14.7 Запазващи се данни........................................................................ 589
14.8 Запазване на резултати в Excel или CSV-формат............................ 591
14.9 Изпълняване на SQL-команди чрез DBI......................................... 592
14.10 Преобразуване на кавичките.......................................................... 596
14.11 Работа с грешки при бази данни.................................................... 596
14.12 Ефикасни повторения на заявки..................................................... 598
14.13 Програмно създаване на заявки...................................................... 600
14.14 Извеждане на броя на редовете, върнати от заявка......................... 601
14.15 Използване на транзакции.............................................................. 602
14.16 Преглед на данните по страници.................................................... 604
14.17 Използване на CSV-файлове със SQL............................................. 606
14.18 Използване на SQL без сървър за база данни................................. 607
14.19 Програма: ggh – извеждане на дневниците
с история на Netscape..................................................................... 609
15. Интерактивност ............................................................................... 613
15.1 Обработка на параметри................................................................. 615
15.2 Проверка за интерактивност.......................................................... 617
15.3 Изчистване на екрана.................................................................... 619
15.4 Определяне на размера на терминал или прозорец......................... 620
15.5 Промяна на цвета на текст............................................................. 620
15.6 Прочитане на единични символи от клавиатурата......................... 622
15.7 Удряне на терминалния звънец...................................................... 623
15.8 POSIX termios................................................................................. 625
15.9 Проверка за чакащ вход.................................................................. 627
15.10 Четене на пароли............................................................................ 627
15.11 Редактиране на вход....................................................................... 628
15.12 Управление на екрана.................................................................... 630
15.13 Контролиране на друга програма с Expect...................................... 632
15.14 Създаване на менюта с Tk.............................................................. 634
15.15 Създаване на диалогови прозорци с Tk.......................................... 637
15.16 Промяна на размера на прозорци.................................................... 640
15.17 Премахване на DOS-прозореца с Windows Perl/Tk.......................... 642
15.18 Графики от данни........................................................................... 642
15.19 Създаване на умалени версии на изображения............................... 643
15.20 Добавяне на текст към изображение............................................... 644
15.21 Програма: малка termcap програма.................................................. 645
15.22 Програма: tkshufflepod.................................................................... 647
15.23 Програма: graphbox......................................................................... 650
16. Управление на процеси и комуникация .................................... 652
16.1 Извеждане на изходния поток на програма..................................... 655
16.2 Стартиране на друга програма........................................................ 657
16.3 Заместване на текущата програма.................................................. 659
16.4 Четене и писане от и в друга програма........................................... 660
16.5 Филтриране на собствения изходен поток...................................... 662
16.6 Предварителна обработка на входящи потоци................................ 664
16.7 Четене на изхода за грешки (STDERR)........................................... 665
16.8 Контролиране на входа и изхода на друга програма....................... 668
16.9 Контролиране на изхода, входа и грешките на друга програма....... 670
16.10 Комуникация между свързани процеси.......................................... 672
16.11 Процес, изглеждащ като файл с именувани конвейери.................. 677
16.12 Споделяне на променливи между процеси..................................... 681
16.13 Извеждане на наличните сигнали................................................... 683
16.14 Изпращане на сигнал...................................................................... 684
16.15 Инсталиране на сигнален манипулатор.......................................... 685
16.16 Временен манипулатор на сигнали................................................. 687
16.17 Създаване на сигнален манипулатор.............................................. 687
16.18 Прихващане на Ctrl-C..................................................................... 690
16.19 Процеси-зомбита............................................................................ 691
16.20 Блокиране на сигнали..................................................................... 694
16.21 Времеви ограничения на операции................................................. 695
16.22 Превръщане на сигнали във фатални грешки................................. 697
16.23 Програма: sigrand............................................................................ 698
17. Сокети ................................................................................................ 704
17.1 Създаване на TCP-клиент.............................................................. 706
17.2 Създаване на TCP-сървър............................................................... 708
17.3 Комуникация по TCP..................................................................... 711
17.4 Създаване на UDP-клиент.............................................................. 714
17.5 Създаване на UDP-сървър.............................................................. 716
17.6 Използване на сокети за Unix-домейни........................................... 718
17.7 Идентифициране на отдалечения край на сокет............................. 720
17.8 Откриване на собственото ни име и адрес..................................... 721
17.9 Затваряне на сокет след създаване на дъщерни процеси................ 722
17.10 Създаване на двупосочни клиенти................................................. 724
17.11 Сървър с дъщерни процеси............................................................ 726
17.12 Сървър с предварително създадени дъщерни процеси.................... 727
17.13 Сървър без дъщерни процеси......................................................... 730
17.14 Многозадачен сървър с нишки....................................................... 734
17.15 Създаване на многозадачен сървър чрез POE................................. 735
17.16 Създаване на сървър, работещ на няколко IP- адреса..................... 738
17.17 Създаване на демон........................................................................ 739
17.18 Рестартиране на сървър.................................................................. 741
17.19 Управление на множество входящи потоци................................... 743
17.20 Програма: backsniff......................................................................... 746
17.21 Програма: fwdport........................................................................... 747
18. Интернет услуги ............................................................................... 752
18.1 DNS-заявки.................................................................................... 754
18.2 Как да станем FTP-клиент.............................................................. 757
18.3 Изпращане на поща........................................................................ 760
18.4 Четене и публикуване на съобщения в новинарски групи............. 763
18.5 Четене на поща чрез POP3............................................................. 765
18.6 Telnet-програма.............................................................................. 768
18.7 Ping към машина............................................................................. 769
18.8 Достъп до LDAP-сървър................................................................. 772
18.9 Изпращане на прикачени файлове по поща................................... 774
18.10 Извличане на прикачени файлове от съобщение
по електронна поща....................................................................... 777
18.11 Създаване на XML-RPC-сървър..................................................... 780
18.12 Създаване на XML-RPC-клиент..................................................... 781
18.13 Създаване на SOAP-сървър............................................................ 782
18.14 Създаване на SOAP-клиент............................................................ 783
18.15 Програма: rfrm................................................................................ 785
18.16 Програма: expn and vrfy.................................................................. 786
19. CGI-програмиране ........................................................................... 789
19.1 Създаване на CGI-скрипт............................................................... 793
19.2 Препращане на съобщения за грешки............................................. 795
19.3 Справяне с грешките 500 Server Error............................................. 797
19.4 Създаване на безопасни CGI-програми........................................... 800
19.5 Стартиране на външни команди..................................................... 804
19.6 Генериране на HTML-списъци и таблици...................................... 806
19.7 Пренасочване на заявка.................................................................. 809
19.8 Трасиране на комуникацията по HTTP.......................................... 811
19.9 Обработка на бисквитки................................................................. 813
19.10 Създаване на компоненти, запомнящи стойностите си.................. 815
19.11 Създаване на CGI-скрипт, генериращ множество страници........... 817
19.12 Запазване на формуляр във файл или препращане
по електронна поща....................................................................... 819
19.13 Програма: chemiserie....................................................................... 821
20. Уеб автоматизация .......................................................................... 827
20.1 Извеждане на URL-адрес от скрипт на Perl.................................... 828
20.2 Автоматизирано предаване на формуляр........................................ 831
20.3 Извличане на URL-адреси.............................................................. 832
20.4 Преобразуване на ASCI в HTML.................................................... 835
20.5 Преобразуване на HTML в ASCII................................................... 836
20.6 Извличане или премахване на HTML-тагове.................................. 837
20.7 Откриване на невалидни връзки.................................................... 839
20.8 Откриване на най-нови връзки....................................................... 840
20.9 Използване на шаблони за генериране на HTML........................... 842
20.10 Огледален образ на Интернет страници......................................... 845
20.11 Създаване на робот......................................................................... 846
20.12 Разбор на файл-дневник на уеб-сървър.......................................... 847
20.13 Обработване на файлове-дневници................................................ 848
20.14 Използване на бисквитки............................................................... 851
20.15 Страници, защитени с пароли........................................................ 852
20.16 Интернет страници през сигурна връзка........................................ 853
20.17 Възобновяване на заявка GET........................................................ 853
20.18 Разбор на HTML ........................................................................... 854
20.19 Извличане на данни от таблица...................................................... 857
20.20 Програма: htmlsub........................................................................... 860
20.21 Програма: hrefsub............................................................................ 862
21. mod_perl .............................................................................................. 864
21.1 Удостоверяване на самоличност..................................................... 869
21.2 Създаване на бисквитки................................................................. 871
21.3 Достъп до стойности на бисквитки................................................ 872
21.4 Пренасочване на навигатор............................................................ 873
21.5 Изследване на заглавни части........................................................ 874
21.6 Извеждане на параметри на формуляр............................................ 874
21.7 Прикачени файлове........................................................................ 876
21.8 Ускоряване на достъп до база данни.............................................. 877
21.9 Промяна на начина на записване на диагностична
информация на Apache................................................................... 878
21.10 Прозрачно запазване на информация в URL- адреси...................... 880
21.11 Комуникация между mod_perl и PHP............................................. 882
21.12 Мигриране от CGI към mod_perl..................................................... 882
21.13 Споделяне на информация между манипулатори........................... 884
21.14 Презареждане на променени модули.............................................. 885
21.15 Оптимизиране на програма на mod_perl ........................................ 886
21.16 Система за шаблони HTML::Mason................................................ 887
21.17 Система за шаблони Template Toolkit............................................. 891
22. XML ..................................................................................................... 898
22.1 Обработка на XML в структура от данни....................................... 906
22.2 Обработка на XML в дървовидна структура DOM......................... 909
22.3 Обработка на XML в събития на SAX............................................ 911
22.4 Извършване на промени в елементи или текст............................... 914
22.5 Проверка за валидност на XML...................................................... 917
22.6 Откриване на елементи и текст в документ на XML...................... 919
22.7 Трансформиране на XML-документи чрез
XSL -листове със стилове............................................................... 922
22.8 Обработване на по-големи от наличната памет файлове................ 924
22.9 Четене и писане на RSS-файлове................................................... 926
22.10 Създаване на XML........................................................................ 929
Индекс ...................................................................................................... 931
Предисловие .............................................................................................. xvii
Предговор .................................................................................................... xix
1. Низове ...................................................................................................... 1
1.1 Достъп до поднизове.......................................................................... 7
1.2 Задаване на стойности по подразбиране.......................................... 10
1.3 Размяна на стойности без използване на временни променливи...... 13
1.4 Преобразуване между символи и числа............................................ 14
1.5 Използване на именувани символи от Unicode................................. 16
1.6 Обработване на низ символ по символ............................................. 18
1.7 Обръщане на думите или на символите в низ ................................. 20
1.8 Третиране на комбинирани символи от Unicode
като единични символи................................................................... 22
1.9 Привеждане на низове с комбинирани символи в каноничен вид.... 23
1.10 Третиране на низ в Unicode като октети.......................................... 25
1.11 Заместване и компресиране на табулации........................................ 26
1.12 Заместване на променливи в потребителски вход............................ 28
1.13 Промяна на начина на изписване на низ.......................................... 30
1.14 Правилно изписване на заглавия...................................................... 32
1.15 Интерполиране на функции и изрази в рамките на низ................... 35
1.16 Подравняване на документи here..................................................... 37
1.17 Преформатиране на абзаци.............................................................. 41
1.18 Екраниране на символи.................................................................... 43
1.19 Премахване на интервалите в краищата на низ................................ 45
1.20 Обработване на разделени със запетая данни................................... 47
1.21 Константни променливи.................................................................. 50
1.22 Съгласуване на звукови шаблони..................................................... 52
1.23 Програма: fixstyle.............................................................................. 54
1.24 Програма: psgrep............................................................................... 57
2. Числа ...................................................................................................... 62
2.1. Проверка дали даден низ представлява валидно число.................... 64
2.2 Закръгляне на числа с плаваща запетая............................................ 67
2.3 Сравняване на числа с плаваща запетая........................................... 70
2.4 Работа с поредици от цели числа..................................................... 72
2.5 Работа с римски числа..................................................................... 74
2.6 Генериране на случайни числа......................................................... 75
2.7 Генериране на повтарящи се последователности
от случайни числа............................................................................ 76
2.8 Генериране на още по-случайни числа............................................. 77
2.9 Генериране на случайни числа с неравномерно разпределение........ 78
2.10 Тригонометрични операции в градуси, не в радиани....................... 80
2.11 Пресмятане на други тригонометрични функции............................. 82
2.12 Пресмятане на логаритми................................................................. 83
2.13 Умножаване на матрици.................................................................. 84
2.14 Операции с комплексни числа......................................................... 86
2.15 Преобразуване на двоични, осмични и шестнадесетични числа..... 87
2.16 Поставяне на запетаи в числа........................................................... 89
2.17 Отпечатване на правилни множествени форми................................ 90
2.18 Програма: Разлагане на прости множители...................................... 92
3. Дати и часове ........................................................................................ 94
3.1 Намиране на днешната дата............................................................. 96
3.2 Преобразуване на DMYHMS в секунди след Епохата...................... 98
3.3 Преобразуване на секунди след Епохата в DMYHMS...................... 99
3.4 Добавяне или изваждане от дата.................................................... 100
3.5 Разлика между две дати.................................................................. 101
3.6 Ден от седмицата/месеца/годината или номер на седмицата.......... 103
3.7 Извличане на дати и часове от низове............................................ 104
3.8 Отпечатване на дата....................................................................... 105
3.9 Фини хронометри........................................................................... 107
3.10 Кратки паузи.................................................................................. 110
3.11 Програма: hopdelta.......................................................................... 111
4. Масиви ................................................................................................. 114
4.1 Задаване на списък в програма....................................................... 115
4.2 Отпечатване на списък със запетаи................................................ 117
4.3 Променяне на размера на масив..................................................... 119
4.4 Реализиране на разреден масив...................................................... 121
4.5 Обхождане на масив....................................................................... 124
4.6 Обхождане на масив чрез препратка............................................... 127
4.7 Извличане на уникалните елементи от списък............................... 129
4.8 Откриване на елементи от масив, които не присъстват в друг....... 131
4.9 Съставяне на обединение, сечение или разлика
на списъци с уникални елементи................................................... 134
4.10 Прилепяне на масив към друг......................................................... 136
4.11 Обръщане на масив........................................................................ 137
4.12 Обработване на няколко елемента от масив................................... 138
4.13 Откриване на първия елемент от списък,
който удовлетворява дадено условие............................................. 140
4.14 Намиране на всички елементи от масив,
които удовлетворяват даден критерий........................................... 142
4.15 Сортиране на числов масив............................................................ 144
4.16 Сортиране на списък по изчислимо поле....................................... 145
4.17 Реализиране на цикличен списък................................................... 149
4.18 Случайно разбъркване на масив..................................................... 150
4.19 Програма: words.............................................................................. 151
4.20 Програма: permute........................................................................... 153
5. Хешове ................................................................................................. 157
5.1 Добавяне на елемент към хеш......................................................... 159
5.2 Проверка дали даден ключ съществува в хеш................................ 160
5.3 Създаване на хеш с непроменливи ключове или стойности........... 162
5.4 Изтриване от хеш........................................................................... 163
5.5 Обхождане на хеш.......................................................................... 165
5.6 Отпечатване на хеш........................................................................ 167
5.7 Извличане на елементи от хеш в реда на вмъкването им................ 169
5.8 Хешове с няколко стойности за един ключ.................................... 170
5.9 Обръщане на елементите в хеш...................................................... 172
5.10 Сортиране на хеш........................................................................... 174
5.11 Сливане на хешове......................................................................... 175
5.12 Откриване на еднакви или различни ключове в два хеша.............. 177
5.13 Хеширане на препратки................................................................. 178
5.14 Променяне на размера на хеш......................................................... 179
5.15 Откриване на най-често срещаното нещо....................................... 180
5.16 Представяне на връзки между данни.............................................. 180
5.17 Програма: dutree............................................................................. 182
6. Съгласуване с шаблони .................................................................... 187
6.1 Едновременно копиране и заменяне............................................... 193
6.2 Откриване на букви....................................................................... 194
6.3 Откриване на думи......................................................................... 196
6.4 Поставяне на коментари в регулярни изрази.................................. 198
6.5 Откриване на N-то срещане на даден низ....................................... 201
6.6 Съгласуване в многоредов низ....................................................... 204
6.7 Четене на разграничени записи...................................................... 207
6.8 Извличане на поредица от редове.................................................. 209
6.9 Съгласуване с глобални символи за заместване
като с регулярни изрази.................................................................. 212
6.10 Ускоряване на интерполираните съгласувания.............................. 213
6.11 Проверка за валиден шаблон.......................................................... 215
6.12 Съобразяване с регионалните настройки в регулярни изрази......... 218
6.13 Съгласуване на приближения......................................................... 219
6.14 Съгласуване от позицията на последния използван шаблон........... 220
6.15 Лакомо и нелакомо съгласуване..................................................... 222
6.16 Засичане на двойни думи............................................................... 225
6.17 Откриване на вложени шаблони.................................................... 229
6.18 Изразяване на AND, OR и NOT в един шаблон.............................. 230
6.19 Откриване на валидни пощенски адреси........................................ 235
6.20 Съгласуване на съкращения........................................................... 237
6.21 Програма: urlify............................................................................... 239
6.22 Програма: tcgrep.............................................................................. 240
6.23 Готови регулярни изрази................................................................ 247
7. Достъп до файлове ............................................................................. 251
7.1 Отваряне на файл........................................................................... 261
7.2 Отваряне на файлове с необичайни имена..................................... 264
7.3 Заместване на тилди в имена на файлове....................................... 266
7.4 Поставяне на имена на файлове в съобщенията
за грешка на Perl............................................................................. 267
7.5 Съхраняване на файлови манипулатори в променливи.................. 268
7.6 Създаване на подпрограма, приемаща файлов манипулатор
подобно на вградените функции.................................................... 272
7.7 Кеширане на отворени изходни файлови манипулатори................ 273
7.8 Изпращане на данни едновременно към множество
файлови манипулатори ................................................................. 274
7.9 Отваряне и затваряне на файлови дескриптори по номер.............. 276
7.10 Копиране на файлови манипулатори.............................................. 277
7.11 Създаване на временни файлове.................................................... 279
7.12 Съхраняване на файл в текста на програмата ви............................ 281
7.13 Съхраняване на няколко файла в областта DATA........................... 282
7.14 Създаване на програма, подобна на филтрите в Unix..................... 284
7.15 Модифициране на файл на място чрез временно копие................. 289
7.16 Модифициране на файл на място чрез ключа -i............................ 2901
7.17 Модифициране на файл на място без временен файл..................... 292
7.18 Заключване на файл....................................................................... 293
7.19 Извеждане на всички данни от буфер............................................ 296
7.20 Извършване на неблокиращи входно-изходни операции................ 299
7.21 Определяне на броя на непрочетените байтове.............................. 301
7.22 Четене от няколко файлови манипулатора без блокиране.............. 303
7.23 Четене на цял ред без блокиране.................................................... 305
7.24 Програма: netlock............................................................................ 307
7.25 Програма: lockarea.......................................................................... 310
8. Съдържание на файлове .................................................................. 316
8.1 Четене на редове със символи за пренасяне................................... 323
8.2 Преброяване на редовете (или на абзаците или
записите) във файл......................................................................... 324
8.3 Обработване на всяка дума в даден файл....................................... 325
8.4 Четене на редове или абзаци от файл отзад напред........................ 327
8.5 Четене на постоянно нарастващ файл............................................ 329
8.6 Четене на случайно избран ред от файл......................................... 331
8.7 Разбъркване на всички редове........................................................ 332
8.8 Прочитане на определен ред от файл............................................. 333
8.9 Обработване на текстови полета с варираща дължина................... 335
8.10 Изтриване на последния ред от файл............................................ 336
8.11 Обработване на двоични файлове.................................................. 337
8.12 Извършване на входно-изходни операции с произволен достъп..... 338
8.13 Обновяване на файл с произволен достъп...................................... 339
8.14 Четене на низ от двоичен файл...................................................... 341
8.15 Четене на записи с фиксирана дължина......................................... 342
8.16 Четене на конфигурационни файлове............................................ 344
8.17 Проверка за надеждност на файл.................................................... 346
8.18 Третиране на файл като масив....................................................... 349
8.19 Настройване на стандартните входно-изходни слоеве.................... 350
8.20 Четене и писане на Unicode от файлов манипулатор...................... 351
8.21 Преобразуване на текстови файлове на Microsoft в Unicode........... 354
8.22 Сравняване на съдържанието на два файла.................................... 356
8.23 Третиране на низ като файл........................................................... 357
8.24 Програма: tailwtmp.......................................................................... 358
8.25 Програма: tctee................................................................................ 359
8.26 Програма: laston.............................................................................. 361
8.27 Програма: Индексиране на файлове............................................... 362
9. Директории ......................................................................................... 364
9.1 Получаване и променяне на дата и час........................................... 370
9.2. Изтриване на файл......................................................................... 371
9.3 Копиране или преместване на файл............................................... 372
9.4 Разпознаване на различни имена на един файл.............................. 373
9.5 Обработване на всички файлове в една директория....................... 375
9.6 Глобално избиране на имена на файлове, удовлетворяващи
определен шаблон.......................................................................... 377
9.7 Рекурсивно обработване на файловете в директория..................... 378
9.8 Премахване на директория и на нейното съдържание.................... 381
9.9 Преименуване на файлове.............................................................. 383
9.10 Разделяне на име на файл на съставните му части......................... 384
9.11 Работа със символни файлови права вместо
с осмични стойности...................................................................... 386
9.12 Програма: symirror.......................................................................... 388
9.13 Програма: lst................................................................................. 3891
10. Подпрограми ..................................................................................... 393
10.1 Достъп до аргументите на подпрограма.......................................... 394
10.2 Създаване на локални променливи във функция............................ 396
10.3 Създаване на постоянни локални променливи.............................. 398
10.4 Определяне на името на текущата функция................................... 400
10.5 Подаване на препратки към масиви и хешове................................ 402
10.6 Определяне на контекста на връщания резултат............................ 403
10.7 Подаване по именуван параметър.................................................. 404
10.8 Пропускане на избрани връщани стойности.................................. 405
10.9 Връщане на повече от един масив или хеш.................................... 406
10.10 Връщане на неуспех....................................................................... 407
10.11 Прототипи на функции.................................................................. 408
10.12 Обработване на изключения........................................................... 412
10.13 Запазване на глобални стойности................................................... 414
10.14 Предефиниране на функция........................................................... 417
10.15 Улавяне на обръщения към недефинирани
функции чрез AUTOLOAD............................................................. 420
10.16 Вграждане на подпрограми............................................................. 421
10.17 Съставяне на разклоняваща се условна конструкция..................... 422
10.18 Програма: сортиране на поща......................................................... 425
11. Препратки и записи ....................................................................... 429
11.1 Работа с препратки към масиви...................................................... 436
11.2 Създаване на хешове от масиви...................................................... 438
11.3 Работа с препратки към хешове...................................................... 439
11.4 Работа с препратки към функции................................................... 440
11.5 Работа с препратки към скалари..................................................... 443
11.6 Създаване на масиви от препратки към скалари............................. 444
11.7 Използване на програмни затваряния вместо обекти...................... 446
11.8 Създаване на препратки към методи.............................................. 447
11.9 Съставяне на записи....................................................................... 448
11.10 Четене и писане на записи от хеш в текстови файлове.................. 451
11.11 Отпечатване на структури от данни............................................... 452
11.12 Копиране на структури от данни.................................................... 454
11.13 Съхраняване на структури от данни на диска................................. 455
11.14 Прозрачно съставяне на постоянни структури от данни................. 457
11.15 Работа с циклични структури от данни,
използващи слаби препратки......................................................... 458
11.16 Програма: Описания....................................................................... 462
11.17 Програма: Двоични дървета............................................................ 464
Том II
12. Пакети, библиотеки и модули ...................................................... 469
12.1 Дефиниране на интерфейс на модул.............................................. 474
12.2 Прихващане на грешки, предизвикани от require или use............... 477
12.3 Обработване на use по време на изпълнение.................................. 478
12.4 Създаване на скрити променливи в модул..................................... 481
12.5 Създаване на скрити функции в модул.......................................... 484
12.6 Определяне на пакета на извикващия код...................................... 485
12.7 Автоматизиране на почистването на данни в модул....................... 487
12.8 Задаване на директория за личните ви модули............................... 489
12.9 Подготвяне на модул за разпространение....................................... 492
12.10 Ускоряване на зареждането на модули чрез SelfLoader................... 494
12.11 Ускоряване на зареждането на модули чрез AutoLoader................. 495
12.12 Предефиниране на вградени функции............................................ 496
12.13 Предефиниране на вградена функция във всички пакети.............. 498
12.14 Съобщаване на грешки и предупреждения подобно на
вградените функции....................................................................... 501
12.15 Настройване на предупрежденията................................................ 502
12.16 Неявно използване на пакети......................................................... 506
12.17 Употреба на h2ph за преобразуване на файлове
за включване от C.......................................................................... 508
12.18 Създаване на модул с код на C с помощта на h2xs......................... 511
12.19 Създаване на разширения на C чрез Inline::C.................................. 514
12.20 Документиране на модул с Pod...................................................... 515
12.21 Компилиране и инсталиране на модул от CPAN............................ 518
12.22 Пример: шаблон за модул............................................................... 521
12.23 Програма: откриване на версиите и на описанията
на инсталираните модули............................................................... 522
13. Класове, обекти и връзки .............................................................. 527
13.1 Създаване на обект......................................................................... 535
13.2 Унищожаване на обект................................................................... 537
13.3 Управление на обектни данни........................................................ 539
13.4 Управление на данни на клас......................................................... 542
13.5 Използване на класове като структури........................................... 544
13.6 Конструктори за клониране............................................................ 548
13.7 Копиращи конструктори................................................................ 549
13.8 Индиректно извикване на методи.................................................. 551
13.9 Определяне на принадлежността на подклас.................................. 553
13.10 Създаване на наследим клас........................................................... 554
13.11 Достъп до предефинирани методи.................................................. 556
13.12 Генериране на атрибутни методи чрез AUTOLOAD....................... 558
13.13 Циклични структури...................................................................... 561
13.14 Натоварени оператори.................................................................... 564
13.15 Създаване на магически променливи с tie...................................... 570
14. Бази Данни ....................................................................................... 578
14.1 Създаване и изполване на DBM-файлове....................................... 580
14.2 Изпразване на DBM-файл.............................................................. 583
14.3 Преобразуване между различни DBM-файлове.............................. 583
14.4 Обединяване на DBM-файлове....................................................... 585
14.5 Сортиране на големи DBM-файлове............................................... 586
14.6 Сортиране на сложни данни в DBM-файл...................................... 587
14.7 Запазващи се данни........................................................................ 589
14.8 Запазване на резултати в Excel или CSV-формат............................ 591
14.9 Изпълняване на SQL-команди чрез DBI......................................... 592
14.10 Преобразуване на кавичките.......................................................... 596
14.11 Работа с грешки при бази данни.................................................... 596
14.12 Ефикасни повторения на заявки..................................................... 598
14.13 Програмно създаване на заявки...................................................... 600
14.14 Извеждане на броя на редовете, върнати от заявка......................... 601
14.15 Използване на транзакции.............................................................. 602
14.16 Преглед на данните по страници.................................................... 604
14.17 Използване на CSV-файлове със SQL............................................. 606
14.18 Използване на SQL без сървър за база данни................................. 607
14.19 Програма: ggh – извеждане на дневниците
с история на Netscape..................................................................... 609
15. Интерактивност ............................................................................... 613
15.1 Обработка на параметри................................................................. 615
15.2 Проверка за интерактивност.......................................................... 617
15.3 Изчистване на екрана.................................................................... 619
15.4 Определяне на размера на терминал или прозорец......................... 620
15.5 Промяна на цвета на текст............................................................. 620
15.6 Прочитане на единични символи от клавиатурата......................... 622
15.7 Удряне на терминалния звънец...................................................... 623
15.8 POSIX termios................................................................................. 625
15.9 Проверка за чакащ вход.................................................................. 627
15.10 Четене на пароли............................................................................ 627
15.11 Редактиране на вход....................................................................... 628
15.12 Управление на екрана.................................................................... 630
15.13 Контролиране на друга програма с Expect...................................... 632
15.14 Създаване на менюта с Tk.............................................................. 634
15.15 Създаване на диалогови прозорци с Tk.......................................... 637
15.16 Промяна на размера на прозорци.................................................... 640
15.17 Премахване на DOS-прозореца с Windows Perl/Tk.......................... 642
15.18 Графики от данни........................................................................... 642
15.19 Създаване на умалени версии на изображения............................... 643
15.20 Добавяне на текст към изображение............................................... 644
15.21 Програма: малка termcap програма.................................................. 645
15.22 Програма: tkshufflepod.................................................................... 647
15.23 Програма: graphbox......................................................................... 650
16. Управление на процеси и комуникация .................................... 652
16.1 Извеждане на изходния поток на програма..................................... 655
16.2 Стартиране на друга програма........................................................ 657
16.3 Заместване на текущата програма.................................................. 659
16.4 Четене и писане от и в друга програма........................................... 660
16.5 Филтриране на собствения изходен поток...................................... 662
16.6 Предварителна обработка на входящи потоци................................ 664
16.7 Четене на изхода за грешки (STDERR)........................................... 665
16.8 Контролиране на входа и изхода на друга програма....................... 668
16.9 Контролиране на изхода, входа и грешките на друга програма....... 670
16.10 Комуникация между свързани процеси.......................................... 672
16.11 Процес, изглеждащ като файл с именувани конвейери.................. 677
16.12 Споделяне на променливи между процеси..................................... 681
16.13 Извеждане на наличните сигнали................................................... 683
16.14 Изпращане на сигнал...................................................................... 684
16.15 Инсталиране на сигнален манипулатор.......................................... 685
16.16 Временен манипулатор на сигнали................................................. 687
16.17 Създаване на сигнален манипулатор.............................................. 687
16.18 Прихващане на Ctrl-C..................................................................... 690
16.19 Процеси-зомбита............................................................................ 691
16.20 Блокиране на сигнали..................................................................... 694
16.21 Времеви ограничения на операции................................................. 695
16.22 Превръщане на сигнали във фатални грешки................................. 697
16.23 Програма: sigrand............................................................................ 698
17. Сокети ................................................................................................ 704
17.1 Създаване на TCP-клиент.............................................................. 706
17.2 Създаване на TCP-сървър............................................................... 708
17.3 Комуникация по TCP..................................................................... 711
17.4 Създаване на UDP-клиент.............................................................. 714
17.5 Създаване на UDP-сървър.............................................................. 716
17.6 Използване на сокети за Unix-домейни........................................... 718
17.7 Идентифициране на отдалечения край на сокет............................. 720
17.8 Откриване на собственото ни име и адрес..................................... 721
17.9 Затваряне на сокет след създаване на дъщерни процеси................ 722
17.10 Създаване на двупосочни клиенти................................................. 724
17.11 Сървър с дъщерни процеси............................................................ 726
17.12 Сървър с предварително създадени дъщерни процеси.................... 727
17.13 Сървър без дъщерни процеси......................................................... 730
17.14 Многозадачен сървър с нишки....................................................... 734
17.15 Създаване на многозадачен сървър чрез POE................................. 735
17.16 Създаване на сървър, работещ на няколко IP- адреса..................... 738
17.17 Създаване на демон........................................................................ 739
17.18 Рестартиране на сървър.................................................................. 741
17.19 Управление на множество входящи потоци................................... 743
17.20 Програма: backsniff......................................................................... 746
17.21 Програма: fwdport........................................................................... 747
18. Интернет услуги ............................................................................... 752
18.1 DNS-заявки.................................................................................... 754
18.2 Как да станем FTP-клиент.............................................................. 757
18.3 Изпращане на поща........................................................................ 760
18.4 Четене и публикуване на съобщения в новинарски групи............. 763
18.5 Четене на поща чрез POP3............................................................. 765
18.6 Telnet-програма.............................................................................. 768
18.7 Ping към машина............................................................................. 769
18.8 Достъп до LDAP-сървър................................................................. 772
18.9 Изпращане на прикачени файлове по поща................................... 774
18.10 Извличане на прикачени файлове от съобщение
по електронна поща....................................................................... 777
18.11 Създаване на XML-RPC-сървър..................................................... 780
18.12 Създаване на XML-RPC-клиент..................................................... 781
18.13 Създаване на SOAP-сървър............................................................ 782
18.14 Създаване на SOAP-клиент............................................................ 783
18.15 Програма: rfrm................................................................................ 785
18.16 Програма: expn and vrfy.................................................................. 786
19. CGI-програмиране ........................................................................... 789
19.1 Създаване на CGI-скрипт............................................................... 793
19.2 Препращане на съобщения за грешки............................................. 795
19.3 Справяне с грешките 500 Server Error............................................. 797
19.4 Създаване на безопасни CGI-програми........................................... 800
19.5 Стартиране на външни команди..................................................... 804
19.6 Генериране на HTML-списъци и таблици...................................... 806
19.7 Пренасочване на заявка.................................................................. 809
19.8 Трасиране на комуникацията по HTTP.......................................... 811
19.9 Обработка на бисквитки................................................................. 813
19.10 Създаване на компоненти, запомнящи стойностите си.................. 815
19.11 Създаване на CGI-скрипт, генериращ множество страници........... 817
19.12 Запазване на формуляр във файл или препращане
по електронна поща....................................................................... 819
19.13 Програма: chemiserie....................................................................... 821
20. Уеб автоматизация .......................................................................... 827
20.1 Извеждане на URL-адрес от скрипт на Perl.................................... 828
20.2 Автоматизирано предаване на формуляр........................................ 831
20.3 Извличане на URL-адреси.............................................................. 832
20.4 Преобразуване на ASCI в HTML.................................................... 835
20.5 Преобразуване на HTML в ASCII................................................... 836
20.6 Извличане или премахване на HTML-тагове.................................. 837
20.7 Откриване на невалидни връзки.................................................... 839
20.8 Откриване на най-нови връзки....................................................... 840
20.9 Използване на шаблони за генериране на HTML........................... 842
20.10 Огледален образ на Интернет страници......................................... 845
20.11 Създаване на робот......................................................................... 846
20.12 Разбор на файл-дневник на уеб-сървър.......................................... 847
20.13 Обработване на файлове-дневници................................................ 848
20.14 Използване на бисквитки............................................................... 851
20.15 Страници, защитени с пароли........................................................ 852
20.16 Интернет страници през сигурна връзка........................................ 853
20.17 Възобновяване на заявка GET........................................................ 853
20.18 Разбор на HTML ........................................................................... 854
20.19 Извличане на данни от таблица...................................................... 857
20.20 Програма: htmlsub........................................................................... 860
20.21 Програма: hrefsub............................................................................ 862
21. mod_perl .............................................................................................. 864
21.1 Удостоверяване на самоличност..................................................... 869
21.2 Създаване на бисквитки................................................................. 871
21.3 Достъп до стойности на бисквитки................................................ 872
21.4 Пренасочване на навигатор............................................................ 873
21.5 Изследване на заглавни части........................................................ 874
21.6 Извеждане на параметри на формуляр............................................ 874
21.7 Прикачени файлове........................................................................ 876
21.8 Ускоряване на достъп до база данни.............................................. 877
21.9 Промяна на начина на записване на диагностична
информация на Apache................................................................... 878
21.10 Прозрачно запазване на информация в URL- адреси...................... 880
21.11 Комуникация между mod_perl и PHP............................................. 882
21.12 Мигриране от CGI към mod_perl..................................................... 882
21.13 Споделяне на информация между манипулатори........................... 884
21.14 Презареждане на променени модули.............................................. 885
21.15 Оптимизиране на програма на mod_perl ........................................ 886
21.16 Система за шаблони HTML::Mason................................................ 887
21.17 Система за шаблони Template Toolkit............................................. 891
22. XML ..................................................................................................... 898
22.1 Обработка на XML в структура от данни....................................... 906
22.2 Обработка на XML в дървовидна структура DOM......................... 909
22.3 Обработка на XML в събития на SAX............................................ 911
22.4 Извършване на промени в елементи или текст............................... 914
22.5 Проверка за валидност на XML...................................................... 917
22.6 Откриване на елементи и текст в документ на XML...................... 919
22.7 Трансформиране на XML-документи чрез
XSL -листове със стилове............................................................... 922
22.8 Обработване на по-големи от наличната памет файлове................ 924
22.9 Четене и писане на RSS-файлове................................................... 926
22.10 Създаване на XML........................................................................ 929
Индекс ...................................................................................................... 931
Том Кристиансен е автор и лектор, който е тясно свързан с развитието на Perl, откакто Лари Уол направи езика достъпен за всеки през 1987. След като работи няколко години за TSR Hobbies (известни с ролевите игри Dungeons and Dragons), той постъпи в колеж – една година в Испания и пет в САЩ, придобивайки класическо образование по информатика, математика, музика, лингвистика и романска филология. В края на краищата той се измъкна от университета в Медисън без докторска степен, но с бакалавърска диплома по испански и информатика, плюс магистратура по информатика, специалност дизайн на операционни системи и изчислителна лингвистика.
Съавтор на Perl Cookbook, Том живее в идиличния град Боулдър, щата Колорадо, където изнася публични семинари, посветени на всички аспекти на програмирането с Perl. Когато бъде придуман да излезе от Народна Република Боулдър, Том пътува по света, провеждайки публични и частни лекции и симпозиуми по Unix, Perl и Интернет на три езика и пет континента. Той си взима почивка всяко лято и се посвещава на хобатата си – четене, туризъм, градинарство, отглеждане на птици, игри, писане на музика и програмиране за удоволствие.
Нейтън Торкингтън никога не е изкачвал Килиманджаро. Никога не е събирал свръхчовешка сила, за да повдигне горяща кола, притиснала безпомощно дете, и все още не е опитвал вкуса на човешка плът. Нейт не е служил като наемник в Конго, не е бягал от къщи, за да се присъедини към цирк, не е прекарвал години в пигмейско племе, нито пък се е разминавал по чудо със смъртта, защото табакерата му е спряла насочен към сърцето му куршум.
Нейт не е американец, въпреки че се опитва да научи езика. Той е от Ти Пойнт, Нова Зеландия. Хората от Ти Пойнт не правят такива неща. Те израстват на рибарски лодки и казват неща като "Всичко ще се оправи, приятел." Но Нейт е по-различен. Той работи като редактор в O’Reilly, подбира материали за Open Source Convention, ръководи проекта Perl 6 и оглавява фондацията Perl. Нейтън живее в Колорадо и Нова Зеландия със своята съпруга Дженин и техните деца Уилям и Аурела. Хобитата му са музиката блуграс и Perl.
Съавтор на Perl Cookbook, Том живее в идиличния град Боулдър, щата Колорадо, където изнася публични семинари, посветени на всички аспекти на програмирането с Perl. Когато бъде придуман да излезе от Народна Република Боулдър, Том пътува по света, провеждайки публични и частни лекции и симпозиуми по Unix, Perl и Интернет на три езика и пет континента. Той си взима почивка всяко лято и се посвещава на хобатата си – четене, туризъм, градинарство, отглеждане на птици, игри, писане на музика и програмиране за удоволствие.
Нейтън Торкингтън никога не е изкачвал Килиманджаро. Никога не е събирал свръхчовешка сила, за да повдигне горяща кола, притиснала безпомощно дете, и все още не е опитвал вкуса на човешка плът. Нейт не е служил като наемник в Конго, не е бягал от къщи, за да се присъедини към цирк, не е прекарвал години в пигмейско племе, нито пък се е разминавал по чудо със смъртта, защото табакерата му е спряла насочен към сърцето му куршум.
Нейт не е американец, въпреки че се опитва да научи езика. Той е от Ти Пойнт, Нова Зеландия. Хората от Ти Пойнт не правят такива неща. Те израстват на рибарски лодки и казват неща като "Всичко ще се оправи, приятел." Но Нейт е по-различен. Той работи като редактор в O’Reilly, подбира материали за Open Source Convention, ръководи проекта Perl 6 и оглавява фондацията Perl. Нейтън живее в Колорадо и Нова Зеландия със своята съпруга Дженин и техните деца Уилям и Аурела. Хобитата му са музиката блуграс и Perl.