_  _   ,_
/^\/^\-/ @D
~(________/ PERL.LT
|L |L
L L
Straipsniai  Funkcijos 
Funkcijos/use - pakrauti modulį kompiliavimo metu
  • use Module VERSION LIST
  • use Module VERSION
  • use Module LIST
  • use Module
  • use VERSION

    Importuoja semantiką į einamąjį paketą iš įvardinto modulio, paprastai pavadindama tam tikrą paprogramę ar kintamųjų vardus pakete. Tai visiškai tolygu

        BEGIN { require Module; import Module LIST; }

    išskyrus tai, kad Module privalo būti pliku žodžiu.

    VERSION gali paimti arba skaitinę reikšmę kaip kad 5.006, kas bus palyginama $] , arba raidinę, formoje v5.6.1, kas bus sulyginama su $^V (aka $PERL_VERSION. Lemtinga klaida bus duodama, jei VERSION yra didesnė negu dabartinė Perl interpretatoriaus versija; Perl nebandys net parsint likusios failo dalies. Palyginimui require, kuris gali atlikti panašius patikrinimus paleidimo metu.

    Nurodyti VERSION kaip raidinę formą v5.6.1 bendrai turėtų būti vengiama, nes tai kartais veda į visiškai neaiškias klaidų žinutes ankstesnėse Perlo versijose, kurios nepalaiko šios sintaksės. Geriau tokiu atveju naudojama atitinkama skaitinė versija.

        use  class=v>v5.6.1;		# compile time version check
        use  class=v>5.6.1;		# ditto
        use 5.006_001;	# ditto; preferred for backwards compatibility

    Tai dažnai naudinga, norint patikrinti dabartinę Perl versiją prieš useinant bibliotekos modulius, kurie pasikeitė nesuderinamais būdais iš senesnių Perl versijų. (Mėginama tai daryti ne daugiau, nei yra būtina).

    BEGIN verčia require ir import būti vykdomiems kompiliavimo metu. require užtikrina, kad modulis būtų užkrautas į atmintį, jei to dar nepadaryta. import nėra builtin'as - tai tiesiog statinis metodo iškvietimas į Module paketą liepti moduliui suimportuoti galimybių sąrašą atgal į einamąjį paketą. Modulis gali realizuoti import metodą bet kuriuo jam patinkančiu būdu, nors dauguma modulių tiesiog pasirenka galimybę įgyti import metodą per paveldėjimą iš Exporter klasės, kuri yra apibrėžta Exporter modulyje. Žr. Exporter. Jei import metodas nerandamas, kvietimas gali būti praleistas.

    Jei nenorite iškviesti paketo import metod(pvz. sustabdyti vardų sritį nuo kaitos), dirbtinai perduokite tuščią sąrašą:

        use Module ();

    Tai tolygu

        BEGIN { require Module }

    Jei VERSION argumentas yra tarp Module ir LIST, tada use iškvies VERSION metodą Module klasėje su duota versija kaip argumentu. Pagal nutylėjimą esantis VERSION metodas, paveldėtas iš UNIVERSAL klasės, praneša, jei duotoji versija didesnė nei kintamojo $Module::VERSION reikšmė .

    Vėlgi, yra skirtumas tarp LIST praleidimo (import iškviestas be argumentų) ir dirbtinai tuščio LIST () (import neiškviestas). Pažymėtina, kad nėra kablelio po VERSION!

    Kadangi tai yra atviras interfeisas, pragmos (kompiliatoriaus direktyvos) yra taip realizuojamos tuo būdu. Einamuoju momenu realizuotos pragmos yra:

        use constant;
        use diagnostics;
        use integer;
        use sigtrap  qw(SEGV BUS);
        use strict   qw(subs vars refs);
        use subs     qw(afunc blurfl);
        use warnings qw(all);
        use sort     qw(stable _quicksort _mergesort);

    Kai kurie pseudo-moduliai importuoja semantiką į einamąją bloko sritį (kaip kad strict ar integer, skirtingai nuo įprastų modulių, kurie importuoja simbolius į einamąjį paketą (kas efektyvu failo pabaigoje).

    Yra atitinkama no komanda, kuri neimportuoja reikšmių, importuotųuse, t.y. ji iškviečia unimport Module LIST vietoj import.

        no integer;
        no strict 'refs';
        no warnings;

    Žr. perlmodlib sąrašui standartinių modulių ir pragmų. Žr. perlrun -M ir -m komandinės eilutės nurodymams perlui, kurie suteikia use funkcionalumą iš komandinės eilutės.

algirdas@perl.lt 2005.04.11 - $dabar