Допомога у написанні освітніх робіт...
Допоможемо швидко та з гарантією якості!

Создание пакетів і модулів в Perl

РефератДопомога в написанніДізнатися вартістьмоєї роботи

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

Создание пакетів і модулів в 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 слід стилю З++ і який використовує «: ». Ось приклад виклику підпрограми 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 і cохраните їх у файлі 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 г.).

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

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

Показати весь текст
Заповнити форму поточною роботою