Crearea de pachete și module în perl

In acest articol vom discuta despre procesul de creare a pachetelor și a modulelor și, ca un exemplu, a crea un modul simplu și pachet.

Securitate și modularitate - cele două mari principii de programare. Perl oferă performanțele lor prin posibilitatea de a împărți programul în fragmente semi-autonome, astfel încât programatorul nu trebuie să vă faceți griji cu privire la conflicte între ei și restul programului. Pentru împărțirea programului în fragmente independente utilizate pachete Perl care creează namespaces nu se suprapun () spațiile de nume. Ce este un nume de domeniu? Această parte a programului cu propriul său domeniu de aplicare de identitate la nivel mondial - cu alte cuvinte, acesta funcționează ca o zonă privată de programator.

De fapt, în Perl nu există nici un lucru, cum ar fi „domeniul de aplicare al identificatorilor la nivel mondial“ - orice astfel de zonă este limitată la un anumit pachet. Crearea unui pachet, veți obține un fel de asigurare că acest cod nu se amesteca cu variabilele și rutinele ale unui alt fragment. Acesta vă permite să organizați un cod destinat utilizării multiple, sub formă de pachete.

În plus, există pachete și module Perl. Moudli - sunt pachete organizate într-un mod special. Ele pot încărca și integra cu un anumit program. În acest articol vom vorbi despre crearea de module și pachete.

Pachetul poate fi reprezentat ca o unitate de Delphi. Codul care este plasat în pachet, poate fi plasat într-un fișier extern, mai multe fișiere, cu toate că unele pachete pot fi plasate într-un singur fișier (care nu este posibilă în yunite Delfi). Comutarea între diferite blocuri într-un fișier aveți nevoie folosind comenzi de pachete. Să creeze un pachet simplu și salvați-l ca package1.pl:

Echipa începe un nou pachet de pachet package1. Fiți atenți la rutine și BEGIN END. Prima rutină este executată imediat după ce pachetul de descărcare. Prin urmare, acesta este de obicei plasat codul de inițializare. Cu toate că ar fi mai adevărat să spunem că subrutina BEGIN este executat imediat ce interpretul vine la el, adică, înainte de sfârșitul pachetului de descărcare. Un sfârșit de rutină este executat la finalizarea lucrărilor interpretului și poate conține cod care efectuează operpatsii finală (cum ar fi de închidere fișiere deschise Rutinele BEGIN și END sunt numite implicit (de fapt, niciodată nu va fi capabil de a apela în mod explicit BEGIN :. translatorul distruge imediat după utilizare). de aceea, aceste rutine sunt compuse din litere majuscule, iar sub cuvântul cheie pentru ele pot fi omise.

Notă subroutine1 de rutină. Acesta poate fi numit în cadrul unui cod care utilizează pachetul. În plus, ar trebui să acorde o atenție la echipa de returnare situat în afara oricărei subrutine - returnează „adevărat“, după descărcarea pachetului, astfel arătând că pachetul este gata de utilizare (de fapt, returnează ultima valoare calculată în corpul pachetului, astfel încât de multe ori în loc de întoarcere linia 1 plasează pur și simplu unitatea).

Pentru a utiliza acest software, codul trebuie să fie plasat în script necesită:

Acum puteți face referire la pachetul de identificatori package1, separarea numele ID-ului cu două colonul „::“. Anterior, ca un separator a fost un apostrof (fie atent, deoarece separatorul este utilizat acum). Dar acum Perl ar trebui să fie C ++ stil și utilizare „::“. Aici este un exemplu de pachet package1 un apel subrutina subroutine1:

inscripția „Hello!“ va fi afișat, ca urmare a acestui program. De asemenea, puteți pune în pachete alți identificatori, cum ar fi variabile:

Utilizați această variabilă cu ușurință. Este suficient să se substituie simbolul „$“ înainte de structura de apel. exemplu:

Rețineți că simbolul „$“ este plasat înainte de numele pachetului, dar nu și pentru post. în fața var1. Cu toate acestea, în acest fel, este imposibil de a ajunge la variabilele descrise cu cuvântul cheie: au domeniul de aplicare lexicală și sunt disponibile numai în cadrul modulului.

Când ne referim la identificatorii pot fi omise numele pachetului, iar apoi pachetul principal va fi utilizat (string $ var1 :: echivalent cu $ principală: var1).

În cazul în care programul are nevoie de destul de multe ori se referă la identificatorii pachetelor, codul devine mare și greu de înțeles. Pentru a rezolva această problemă trebuie să utilizați modulele. Când se utilizează modulul, puteți exporta denumirile enumerate în modulul în spațiul de nume curent.

Module - l pachet, proiectat în fișiere separate, ale căror nume se potrivesc cu ultimul numele modulelor și au extensia PM. Perl Conform acordului precizează că numele modulului începe cu o literă de capital. Codul de conținut în modulul, spre deosebire de „lot“ codul poate exporta nume la nivel mondial în domeniul de aplicare actual al numelor globale. Acest lucru înseamnă că, atunci când se referă la ID-ul nu are nevoie pentru a specifica numele pachetului.

Să considerăm un exemplu. Creați un modul numit Module1 și Salvați Module1.pm în dosarul său. În codul BEGIN subrutină se execută atunci când modulul este încărcat, vom folosi modul standard exportatori, care ar fi exportate numele subroutine1 al subrutina:

Pentru a utiliza modulul în program trebuie să-l conectați cu „utilizarea“ comanda (va fi activată la momentul compilării). Dacă vom conecta modulul necesită o echipă a modulului este conectat la momentul executării scriptului. exemplu:

În „Bună ziua!“ Linia va afișa rezultatele execuției codului.