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

     

     

     

     

     

         
     
    Використання мови Perl
         

     

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

    Використання мови Perl

    Зміст

    6.1Основние особливості Perl
    6.1.1Введеніе

    6.2Взаімодействіе з СУБД
    6.2.1Взаімодействіе з Oracle
    6.2.1.1Основние функції доступу
    6.2.1.2Дополнітельние функції
    6.2.1.3Переменние
    6.2.1.4Переменние для підстановки

    6.3Напісаніе модулів CGI

    6.4Обработка файлів формату DBF

    6.1 Основні особливості Perl

    6.1.1 Введення

    Perl - інтерпретована мову, пристосований для обробки довільних текстових файлів, витягання з них необхідної інформації і видачі повідомлень. Perl також зручний для написання різних системних програм. Ця мова простий у використанні, ефективний, але про нього важко сказати, що він елегантний і компактний. Perl сочитать в собі кращі риси C, shell, sed і awk, тому для тих, хто знайомий з ними, вивчення Perl-а не становитиме особливих труднощів. Cінтаксіс виразів Perl-а близький до синтаксису C. У відміну від більшості утиліт ОС UNIX Perl не ставить обмежень на обсяг оброблюваних даних і якщо вистачає ресурсів, то весь файл обробляється як один рядок. Рекурсія може бути довільної глибини. Хоча Perl пристосований для обробки текстових файлів, він може обробляти так само двійкові дані і створювати. dbm файли, подібні асоціативним масивів. Perl дозволяє використовувати регулярні вирази, створювати об'єкти, вставляти в програму на С або C + + шматки коду на Perl-і, а також дозволяє здійснювати доступ до баз даних, у тому числі Oracle.
    Ця мова часто використовується для написання CGI-модулів, які, у свою чергу, можуть звертатися до баз даних. Таким чином може здійснюватися доступ до баз даних через WWW. 6.2 Взаємодія з СУБД

    Perl дозволяє здійснювати доступ до різних СУБД. Тут буде висвітлено питання доступу до СУБД Oracle. 6.2.1 Взаємодія з Oracle 6.2.1.1 Основні функції доступу

    Ми наведемо тут приклад програми, яка створює таблицю, вміщує в неї деякі дані і потім проводить вибірку строк з цієї таблиці. #!/usr/local/bin/perluse Oraperl; # підключаємо модуль Oraperl $ system_id = 'T: bdhost.com: Base'; $ lda = & ora_login ($ system_id, 'scott', 'tiger'); # вхід в систему $ st = 'create table EMP (name varchar2 (100), organization varchar2 (100 ))';$ csr = & ora_open ($ lda, $ st) | | die $ ora_errstr; & ora_close ($ csr); # створення таблиці в базі даних $ st = 'insert into EMP values (' John Smit ',' NATO')';$ csr = & ora_open ($ lda, $ st); & ora_close ($ csr); # приміщення рядки в таблицю

    У результаті в базі створилася таблиця з двох стовпців з одним записом:         Name          Organization             John Smit         NATO      $ st = 'select name from EMPwhere organization =' NATO''; $ csr = & ora_open ($ lda, $ st); # вибираємо з таблиці значення стовпця name, # яким сответствует значення стовпця organization # рівне 'NATO' @ result = & ora_fetch ($ csr); # поміщаємо ці значення в масив @ result & ora_close ($ csr); print @ result; & ora_logoff ($ lda); # вихід із системи

    Для взаємодії з Oracle в Perl є спеціальний модуль Oraperl.pm. Основними функціями для доступу до бази даних є:
    & ora_login $ lda = & ora_login ($ system_id, $ username, $ password)

    Для того, щоб отримати доступ до інформації, що зберігається в Oracle необхідно спочатку увійти в систему. Це здійснюється викликом функції & ora_login (). Ця функція має три параметри: системний ідентифікатор бази даних, ім'я користувача в базі і пароль користувача. Повертається код реєстрації в системі (Oracle Login Data Area). Кілька доступів можуть здійснюватися одночасно. Ця функція еквівалентна функції OCI (Oracle Call Interface) olon або orlon.
    & ora_open $ csr = & ora_open ($ lda, $ statement [, $ cache])

    Для визначення SQL-запиту до бази даних програма повинна викликати функцію & ora_open. Ця функція має як мінімум два параметри: ідентифікатор реєстрації і SQL вираз. Необов'язковий третій параметр описує розмір буфера строк для SELECT оператора. Повертається курсор Oracle. Якщо третій параметр опущений, то використовується стандартний розмір буфера. $ csr = & ora_open ($ lda, 'select ename, sal from emp order by ename', 10);

    Ця функція еквівалентна функції OCI oopen або oparse.
    & ora_bind & ora_bind ($ csr, $ var, ...)

    Якщо SQL вираз містить звернення до змінних мови Perl, то необхідно підставити замість імен значення змінних. Для цього використовується функція & ora_bind. $ csr = & ora_open ($ lda, 'insert into emp values (: 1,: 2 )');& ora_bind ($ csr, $ ename, $ sal);

    - підставляє в SQL вираз замість: 1 і: 2 значення змінних $ ename і $ sal.
    & ora_fetch $ nfields = & ora_fetch ($ csr [, trunc]); @ array = & ora_fetch ($ csr);

    Ця функція використовується з оператором SQL SELECT для отримання інформації з бази даних і має тільки один обов'язковий параметр - ідентифікатор курсору, отриманий у результаті виклику функції & ora_open. У скалярному контексті вона повертає число вибраних стрічок, у списковому - масив вибраних стрічок. Другий необов'язковий параметр містить інформацію про те, чи можна обрізати дані типів і LONG LONG RAW або видавати повідомлення про помилку. Якщо параметр опущений, то інформація береться з змінної $ ora_trunc. Якщо сталася обрізання даних, то змінна $ ora_errno приймає значення 1406. Ця функція еквівалентна функції OCI ofetch.
    & ora_close & ora_close ($ csr)

    Якщо відкритий курсор не буде більше використовуватися, то його треба закрити викликом функції & ora_close. Це еквівалентно функції OCI oclose.
    & ora_do & ora_do ($ lda, $ statement)

    Не всі SQL-вирази повертають дані або містять змінні для підстановки. У таких випадках функція & ora_do виступає в якості альтернативи & ora_open і & ora_close. Першим параметром є ідентифікатор реєстрації, другий - SQL вираз. & ora_do ($ lda, 'drop table employee');

    це еквівалентно: & ora_close (& ora_open ($ lda, 'drop table employee'));


    & ora_logoff & ora_logoff ($ lda)

    Для виходу із системи використовується функція & ora_logoff. Вона еквівалентна функції OCI ologoff. 6.2.1.2 Додаткові функції

    Додаткові можливості надаються функціями
    & ora_titles ()
    & ora_length ()
    & ora_types ()
    & ora_autocommit ()
    & ora_commit ()
    & ora_rollback ()
    & ora_version ()

    & ora_titles @ titles = & ora_titles ($ csr)

    Програма може визначити назву полів, вміст яких буде вилучено запитом, викликом функції & ora_title. Ця функція має один параметр - курсор. Заголовки обрізаються до довжини поля.
    & ora_length @ length = & ora_length ($ csr)

    Програма може визначити довжину кожного з полів, повернутих запитом, з допомогою виклику функції & ora_length. Вона має тільки один параметр - курсор і повертає масив цілих чисел.
    & ora_types @ types = & ora_types ($ csr)

    Програма може визначити тип кожного з полів, повернутих запитом, з допомогою виклику функції & ora_types. Вона має один параметр - курсор і повертає масив цілих чисел. Ці типи визначаються в документації по OCI і у файлі oraperl.ph для Oracle v6.
    & ora_autocommit & ora_autocommit ($ lda, $ on_or_off)

    Режим автоматичного завершення транзакцій можна встановити або скасувати викликом функції & ora_autocommit. Ця функція має два параметри: ідентифікатор реєстрації та Булевського змінну, яка вказує дію, яку потрібно виконати. Якщо значення змінної ненульове, то режим включається, якщо нульове, то відключається. За замовчуванням режим не включений. Режим включається на тривалість перебування в системі. Якщо є необхідність включати його тільки для одного оператора, то краще робити кілька реєстрацій та будуть використані для кожного оператора окремий ідентифікатор реєстрації.
    & ora_commit, & ora_rollback & ora_commit ($ lda) & ora_rollback ($ lda)

    Зміни в базі даних можуть бути збережені або скасовані викликом цих функцій. Вони мають один параметр - ідентифікатор реєстрації в системі. Транзакції, результат яких вже був збережений не можуть бути скасовані & ora_rollback. Ці функції також діють на весь час перебування в системі, а не на окремі оператори.
    & ora_version & ora_version ()

    Ця функція друкує версію та інформацію про авторські права, що стосується Oraperl. Вона не повертає нічого. 6.2.1.3 Змінні

    У модулі Oraperl.pm є шість спеціальних змінних:
    $ ora_cache
    $ ora_long
    $ ora_trunc
    $ ora_errno
    $ ora_errstr
    $ ora_verno
    Ці змінні використовуються для визначення поведінки Oraperl в певних умовах.
    $ ora_cache Ця змінна визначає розмір буфера для функції & ora_open () і SELECT-вирази, якщо точний розмір буфера не вказаний. Як правило встановлюється розмір буфера рівний п'яти. Присвоєння цій змінній значення, рівного нулю, встановлює значення цієї змінної рівним початкового значення. Присвоєння негативної величини призводить до помилки.
    $ ora_long Зазвичай Oraperl запитує базу даних про довжину кожного поля і відповідним чином розподіляє буферна простір. Це неможливо для полів типу LONG і LONGRAW. Розподіл простору в припущенні максимально можливої довжини (65535 bytes) призвело б до зайвих витрат пам'яті. Тому коли & ora_open () визначає, що поле має тип LONG, пам'ять розподіляється по значенню змінної $ ora_long. При ініціалізації вона приймає значення 80 (для сумісності з продуктами Oracle), але в програмі її можна встановлювати довільним чином.
    $ ora_trunc Так як Oraperl не може точно визначати довжину значень типу LONG, виникають ситуації, коли значення $ ora_long недостатньо для зберігання отриманих даних. У такому випадку, якщо у & ora_fetch є необов'язковий другий параметр, відбувається обрізання даних. Якщо другий параметр опущений, то замість нього використовується значення $ ora_trunc.
    $ ora_errno Містить код помилки що сталася під час останнього виклику якої-небудь функції. Є два цікаві випадки, що стосуються & ora_fetch (). У першому випадку, якщо відбулося обрізання даних типу LONG або LONGRAW та обрізання було дозволено, тоді виконання цієї функції повністю успішно, але $ ora_errno приймає значення 1406, для індикації того, що відбулося обрізання. У другому випадку, якщо & ora_fetch () повернула false, то $ ora_errno приймає значення 0 у разі кінця даних або код помилки, якщо дійсно сталася помилка.
    $ ora_errstr Містить повідомлення про помилку, відповідне значенням $ ora_errno.
    $ ora_verno Містить версію Oraperl у форматі v.ppp, де v - основний номер версії, а ppp - patchlevel. 6.2.1.4 Змінні для підстановки

    Oraperl дозволяє SQL висловом містити звернення до змінних мови Perl. Вони складаються з двокрапки і наступного за ним номера. Наприклад: $ csr = & ora_open ($ lda, "insert into tel values (: 1,: 2)");

    Ці два імені: 1 і: 2 називаються змінними для підстановки. Функція & ora_bind () використовується для прив'язування змінних до їх значень. & ora_bind ($ csr, "Annette", "3-222-2-22-22-22"); & ora_bind ($ csr, $ name, $ telephone);

    Номери змінних повинні слідувати в порядку зростання починаючи з 1, так як & ora_bind виконує підстановку саме в такому порядку. 6.3 Написання модулів CGI

    Мова Perl дуже широко використовується при написанні виконуваних модулів CGI (Common Gateway Interface) для Web. Це зумовлено насамперед тим, що Perl надає розробникам прості та зручні засоби обробки тексту і взаємодії з базами даних. Наша мета - лише дати приклад використання Perl для написання CGI-модуля. Розглянемо просту підпрограму розбору вхідного потоку CGI-програми (при передачі параметрів використовується метод POST ). #!/usr/local/bin/perlsub Print ($ len = 100; $ buf = ""; read (STDIN, $ buf, $ len); # зчитуємо із стандартного потоку введення # в змінну $ buf кількість символів # $ len @ ar = split (/[&=]/,$ buf); # розбиваємо рядок в масив рядків, # роздільниками служать & і =. $ output = "Content-type: text/htmlnn # посилає тип MIME переданого документаResultHi there
    "; $ i = 0; while ($ i open_dbf ($ dbf_name, $ idx_name);

    Ми асоціювали DBF-файл і необов'язковий індексний файл з об'єктом. Щоб визначити тип (database type) можна зробити наступне: print $ database-> dbf_type;

    Повернеться рядок, який, якщо Xbase файл відкритий, буде містити значення DBF3, DBF4 або FOX. Щоб дізнатися про дату останнього оновлення робиться наступне: print $ database-> last_update;

    Повертає рядок з датою.
    Щоб дізнатися номер останнього запису можна зробити наступне: $ end = $ database-> lastrec;

    Повернеться номер останнього запису у файлі з базою даних.
    Інформацію про статус бази даних можна подивитися в такий спосіб: $ database-> dbf_stat;

    У стандартний вихідний потік буде надруковано інформацію про статус і структурі бази даних. Цей метод працює аналогічно команді display status.
    Переглянути інформацію про статус індексного файлу можна використовуючи метод idx_stat: $ database-> idx_stat;

    Друкує в стандартний вихідний потік (STDOUT) інформацію про статус відкритого IDX-файлу.
    Для того щоб перейти на початок файлу є метод go_top: $ database-> go_top;

    пересуває курсор читання на фізичний початок файлу, якщо індекси не існують і на перший запис, що відповідає порядку, який задається індексом, в протилежному випадку.
    Для того щоб перейти на кінець файлу є метод go_bottom: $ database-> go_bottom;

    пересуває курсор читання на фізичний кінець файлу, якщо індекси не існують і на останній запис, що відповідає порядку, який задається індексом, в протилежному випадку.
    Щоб перейти на наступний запис є метод go_next: $ database-> go_next;

    еквівалентно команді skip 1, яка пересуває курсор на наступний запис.
    Щоб перейти на попередній запис є метод go_prev: $ database-> go_prev;

    еквівалентно команді skip -1, яка пересуває курсор на попередній запис.
    Є можливість здійснити пошук по заданому ключу: $ stat = $ database-> seek ($ keyvalue);

    Ця команда встановлює курсор на перший запис, що відповідає даним ключу. Але в даному випадку база даних повинна бути відкрита з відповідним індексом, в протилежному випадку буде видане повідомлення про помилку і виконання припинитися. Повертається значення, що містить інформацію про те, чи був ключ знайдений чи ні.
    Щоб дізнатися номер запису, на якому стоїть курсор можна використовувати наступну команду: $ current_rec = $ database-> recno;

    Метод bof повертає значення true, якщо курсор знаходиться на самому початку файлу. if ($ database-> bof) (print "At the very top of the file n";)

    Аналогічно діє метод eof: if ($ database-> eof) (print "At the very end of the file n";)

    Щоб прочитати вміст будь-якого поля запису можна вчинити так: print $ database-> get_field ( "NAME");

    Повертає рядок з вмістом поля. Якщо даний запис позначена для видалення, то використовує псевдоімя поля _DELETED.
    Щоб прочитати значення полів запису в масив можна вчинити так: @ fields = $ database-> get_record;

    У масиві вони будуть розташовуватися в такій же послідовності, як і в базі даних.
    Для закриття бази даних використовується метод close_dbf. $ database-> close_dbf;

    Закриває файл з базою даних, індексами та коментарями. На завершення наведемо невеликий приклад програми, яка роздруковує статус бази даних та індексного файлу, а також дату останнього оновлення і кількість записів у базі даних. #!/usr/bin/perluse Xbase; # підключення модуля $ database = new Xbase; # створення об'єкта $ d = "/ home/smit/employee.dbf"; # ім'я файлу з базою $ i = "/ home/smit/employee.cdx "; # ім'я індексного файлу $ database-> open_dbf ($ d, $ i); # відкриваємо базу даних $ database-> dbf_stat; # друкуємо статус і структуру # бази даних $ database-> idx_stat; # друкуємо статус і структуру # індексів @ fields = $ database-> get_record; print @ fields, "n"; # друкуємо вміст поточної запісіprint $ database-> last_update, "n"; # друкуємо дату останнього оновлення $ end = $ database-> lastrec; print $ end; # друкуємо номер останнього запису

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

     

     

     

     

     

     

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