ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Практичний Перл для початківця
         

     

    Інформатика, програмування

    Практичний Перл для початківця

    Дана робота написана для людей, яким в силу непереборних обставин приспічило терміново вивчити Перл. Для мене такою обставиною стало те, що мій комп'ютер став WEB-сервером, а я, відповідно, WEB-майстром. Вчитися прийнято на чужих помилках і досвіді, тому пропоную Вашій увазі свій досвід вивчення Перла.

    Відразу потрібно пояснити, для кого це все написано. Якщо Ваш сервер працює на платформі UNIX, то це я повинен читати Вашу статтю. У мене ж встановлений Windows NT workstation 4.0 (RUS) плюс Service Pack 3. Коли прийшов час зробити з комп'ютера WEB-сервер, я було кинувся до вбудованим Служб вузла WEB, але швидко зрозумів, що це мені не подобається (чому?). І тут один добра людина порадив поставити Xitami WEB Server від iMatix Corporation (http://www.imatix.com/), який і стоїть донині.

    Що стосується самого Перла, то тут дещо складніше. Покопавшись з різних Перлових серверів (www.perl.org, www.perl.com) я дізнався, що версій Перла настільки багато, що вибрати що-небудь конкретне досить складно. При цьому яких-небудь зрозумілих рекомендацій з приводу вибору тієї чи іншої версії ніде немає. Перепробувавши майже всі версії для Windows, я зупинив свій вибір на Active Perl (http://www.activestate.com/).

    Людині, розпещеному всякими Віндовозамі і Дельфи, писати програми на Перл досить незвично, тому настійно рекомендую відразу встановити Perl Builder. Взяти його можна на www.solutionsoft.com. Там лежала тридцятиденний Демо версія.

    Ну, думаю, пора переходити безпосередньо до справи. У загальному випадку, скрипт на Перл, як і будь-яка інша програма, працює так:

    отримує дані

    обробляє дані

    видає результати

    Надіслати дані скрипту можна двома методами - GET та POST. Різниця між ними в тому, що при використанні GET дані постійно бовтаються в рядку адреси браузера, напімер:

    httр:// treagraf.tasur.edu.ru/cgi-bin/price.pl? Category = POWER & Description = varta

    У цьому випадку скрипт B_price.pl бере дані в змінній оточення QUERY-STRING.

    $ data = $ ENV ( 'QUERY_STRING'};

    При використанні методу POST дані передаються на стандартний вхід скрипта. Довжина блоку даних береться у змінній CONTENT_LENGTH:

    read (STDIN, $ data, $ ENV ( 'CONTENT_LENGTH'});

    Тепер ці дані потрібно перевести в легкотравний вигляд, оскільки вони закодовані.

    Стандартним угодою служить заміна пробілів знаками плюс і потім кодування, що залишилися неприпустимих символів за допомогою ASCII-кодів у шістнадцятковій формі, перед якими ставиться знак (%). Приклад:

    http://treagraf.tasur.edu.ru/cgi-bin/B_price.pl?Category =% C2% E8% E4% E5% EE & Description =% E0% E1% E2% E3

    Це означає:

    http://treagraf.tasur.edu.ru/cgi-bin/B_price.pl?Category=Видео&Description=абвг

    декодувати рядок запитів в перший раз краще самому. На питання "а як?" є безліч відповідей, переписувати які немає сенсу. Наведу лише короткий приклад:

    Замінюємо знаки (+) На прогалини

    $ query = ~ s/+// g;

    Потім замінюємо всі поєднання знака (%), після якого слідують шістнадцяткові цифри, на відповідний символ ASCII

    $ query = ~ s /% ([0-9A-H] (2))/pack ( 'C', hex ($ 1))/eg;

    Я користуюся тим, що пропонує Perl Builder:

    #! E: perl5binperl

    & GetFormInput; # виклик підпрограми отримання даних

    $ Category = $ field ( 'Category'); # отримуємо дані з поля Category

    $ Description = $ field ( 'Description'); # отримуємо дані з поля Description

    $ Page = $ field ( 'Page'); # отримуємо дані з поля Page

    Наприкінці скрипта поміщаємо підпрограму "прозорого" читання даних.

    sub GetFormInput (

    (* fval) = @ _ if @ _;

    local ($ buf);

    if ($ ENV ( 'REQUEST_METHOD') eq 'POST') (

    read (STDIN, $ buf, $ ENV ( 'CONTENT_LENGTH'));

    )

    else (

    $ buf = $ ENV ( 'QUERY_STRING');

    )

    if ($ buf eq "") (

    return 0;

    )

    else (

    @ fval = split (/&/,$ buf);

    foreach $ i (0 .. $ # fval) (

    ($ name, $ val) = split (/=/,$ fval [$ i], 2);

    $ val = ~ tr/+//;

    $ val = ~ s /%(..)/ pack ( "c", hex ($ 1))/ge;

    $ name = ~ tr/+//;

    $ name = ~ s /%(..)/ pack ( "c", hex ($ 1))/ge;

    if (! defined ($ field ($ name))) (

    $ field ($ name) = $ val;

    )

    else (

    $ field ($ name) .= ", $ val";

    # if you want multi-selects to goto into an array change to:

    # $ field ($ name) .= "eight = "53" valign = "top">

    HTML

    close InFile;

    # Закриваємо файл із записами гостьової книги.

    Список літератури

    Олександр Боровський . Практичний Перл для початківця.

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status