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

     

     

     

     

     

         
     
    Створення пакетів і модулів в Perl
         

     

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

    Створення пакетів і модулів в Perl

    В цій статті ми розглянемо процес створення пакетів і модулів і в якості приклад створимо один простий модуль і пакет.

    Intro

    Захищеність і модульність - два великі принципу програмування. Perl забезпечує їх виконання, надаючи можливість розбивати програму на напівавтономні фрагменти так, що програмісту не треба турбуватися про конфлікти між ними і іншою частиною програми. Для поділу програми на незалежні фрагменти використовуються пакети Perl, які створюють непересічні області імен (namespaces). Що таке область імен? Це частина програми зі своєю власне областю видимості глобальних ідентифікаторів - іншими словами, вона функціонує як приватна територія програміста.

    На Насправді в Perl немає такої речі, як "область видимості глобальних ідентифікаторів ", - будь-яка така область обмежується певним пакетом. Створюючи пакет, ви отримуєте якусь гарантію того, що ваш код не змішається з змінними та підпрограмами іншого фрагмента. Це дозволяє організовувати код, призначений для багаторазового використання, у вигляді пакетів.

    Крім пакетів існують також модулі Perl. Моудлі - це пакети, організовані спеціальним чином. Їх можна завантажувати і інтегрувати з конкретною програмою. У цій статті піде мова про створення модулів і пакетів.

    Пакети

    Пакет можна представити у вигляді юніта Delphi. Код, що поміщається в пакет, може розміщуватися в зовнішньому файлі, в декількох файлах, хоча кілька пакетів можуть розміщуватися в одному файлі (що неможливо зробити в дельфійського юніті). Перемикатися між різними пакетами всередині файлу потрібно за допомогою команди package. Давайте створимо простий пакет і збережемо його як package1.pl:

    package package1;

    BEGIN ()

    sub subroutine1 (print "Hello! N ";}

    return 1;

    END ()

    Команда package починає новий пакет package1. Зверніть увагу на підпрограми BEGIN та END. Перша підпрограма виконується відразу ж після завантаження пакету. Тому в неї зазвичай поміщають ініціалізувалися код. Хоча вірніше було б стверджувати, що підпрограма BEGIN виконується як тільки інтерпретатор доходить до неї, тобто до закінчення завантаження пакету. А підпрограма END виконується під час завершення роботи інтерпретатора і може містити код, який виконує заключні оперпаціі (наприклад закриття відкритих файлів. Підпрограми BEGIN та END викликаються неявним чином (більше того, вам ніколи не вдасться явно викликати BEGIN: інтерпретатор знищує її відразу ж після використання). Саме тому ці підпрограми складаються з великих літер, і ключове слово sub для них можна не вказувати.

    Зверніть увагу на підпрограму subroutine1. Її можна викликати в межах коду, використовує пакет. Крім того, варто звернути увагу на команду return, розташовану поза будь-яких підпрограм, - вона повертає значення "істина" після завантаження пакету, показуючи таким чином, що пакет готовий до роботи (на самом справі повертається останнє значення, обчислена в тілі пакету, тому часто замість рядка return 1 ставиться просто одиниця).

    Що б використовувати в програмі код пакета, необхідно помістити в сценарій команду require:

    require "package1.pl";

    Тепер можна посилатися на ідентифікатори пакету package1, відокремивши його ім'я від ідентифікатора двома двокрапками "::". Раніше в ролі роздільник був апостроф (будьте уважні, тому що цей роздільник використовується і зараз). Але тепер Perl слід стилю C + + і використовує "::". Ось приклад виклику підпрограми subroutine1 з пакету package1:

    require "package1.pl";

    package1:: subroutine1 ();

    Як результат роботи цієї програми буде виведена напис "Hello!". Можна також у пакети поміщати інші ідентифікатори, наприклад змінні:

    package package1;

    BEGIN ()

    $ var1 = 1;

    sub subroutine1 (print "Hello! N ";}

    return 1;

    END ()

    Використовувати цю змінну легко. Досить підставити символ "$" перед конструкцією дзвінка. Приклад:

    require "package1.pl";

    $ package1:: var1;

    Зверніть увагу, що символ "$" ставиться перед ім'ям пакету, але НЕ ставиться після:: перед var1. Проте у такий спосіб неможливо дістатися до змінних, описаних з ключовим словом my: вони мають лексичної областю видимості і доступні тільки всередині модуля.

    При зверненні до ідентифікаторів можна опускати ім'я пакету, і тоді буде використаний пакет main (рядок $:: var1 еквівалентна $ main: var1).

    Якщо в програмі треба досить часто звертатися до ідентифікаторів з пакетів, то код стає великим і малозрозумілим. Що б вирішити цю проблему потрібно використовувати модулі. При використанні модулів можна експортувати імена, вказані в модулі в поточну область імен.

    Модулі

    Модулі - Це пакети, оформлені в окремих файлах, у яких імена останніх збігаються з іменами модулів і мають розширення pm. За угодою Perl визначає, що ім'я модуля починається з великої літери. Код, що міститься в модулі, на відміну від "пакетного" коду, може експортувати глобальні імена в поточну область глобальних імен. Це означає, що при зверненні до ідентифікатора не потрібно вказувати ім'я пакета.

    Розглянемо приклад. Створіть модуль з ім'ям Module1 і зберіг його у файлі Module1.pm. У коді підпрограми BEGIN, що виконується при завантаженні модуля, будемо використовувати стандартний модуль Exporter, що б експортувати ім'я підпрограми subroutine1:

    package Module1;

    BEGIN (

    use Exporter ();

    @ ISA = "Exporter";

    @ EXPORT = "& subroutine1";

    )

    sub subroutine1 (print "Hello! N ";}

    return1;

    END ()

    Для використання модуля в програмі треба підключити його за допомогою команди "use" (він буде включений у момент компіляції). Якщо ж підключити модуль командою require то модуль підключиться в момент виконання сценарію. Приклад:

    use Module1;

    subroutine1 ();

    В результаті виконання цього коду буде виведений рядок "Hello !".

    Outro

    Ця стаття не претендує на повноту опису модулів і пакетів. Існує ще багато, чого ви не дізналися з цієї статті: пакети можна вкладати один в одного, дозволяти експортувати певні імена і не експортувати їх за замовчуванням і навіть викликати неіснуючі підпрограми. Але це тема величезною глави книги, якщо не всієї книги.

    При підготовці статті були використані матеріали з книги "Perl. Спеціальний довідник "(автор Стівен Холзнер, видавництво" Пітер ", 2001 р.)

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

    Для підготовки даної роботи були використані матеріали з сайту http://www.soch.imperium.by

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

     

     

     

     

     

     

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