_  _   ,_
/^\/^\-/ @D
~(________/ PERL.LT
|L |L
L L
Straipsniai  Funkcijos 
Funkcijos/do - paverčia BLOCK į TERM
  • do BLOCK

    Iš tikrųjų net ne funkcija. Gražina paskutinės komandos reikšmę sekoje komandų, aprašytoje BLOCK. Kai pakoreguotas ciklo modifikatoriaus, paleidžia BLOCK kaskart prieš patikrinant ciklo sąlygą. (Kitus sakinius ciklo modifikatoriai pratikrina pirmiau.)

    do BLOCK nesiskaito ciklu, taigi ciklo kontroliniai sakiniai kaip next, last ar redo negali būti naudojami palikti ar restartuoti bloką. Žr. perlsyn alternatyvoms.

  • do SUBROUTINE(LIST)

    Atgyvenus paprogramės iškvietimo forma. Žr. perlsub.

  • do EXPR

    Naudoja EXPR reikšmę kaip failo vardą ir paleidžia failo turinį kaip Perl skriptą. Pirminis panaudojimas yra įtraukti paprogrames iš Perl paprogramių bibliotekos.

        do 'stat.pl';

    kaip ir

        eval `cat stat.pl`;

    , skirtumas tik tas, kad šis variantas efektyvesnis trumpesnis, seka einamąjį failo vardą klaidų žinutėms, praieško @INC bibliotekas ir atnaujina %INC, jei failas randamas. Žr. "Predefined Names" perlvar dėl šių kintamųjų. Taip pat skiriasi tuo, kad kode, sulygintam su do FILENAME negali pastebėti leksikos įdedamoje srityje; eval STRING gali. Tai taip pat, kaip ne kaip, kad šis variantas kiekvieną kartą pernagrinėja (perparsina) failą kiekvieną kartą, kai jis iškviečiamas, taigi, greičiausia aišku, kad naudoti jį cikle nepatartina.

    Jei do negali nuskaityti failo, gražina undef ir užsetina $! klaidai. Jei do gali nuskaityti failą, bet negali jo sukompiliuoti, tada jis gražina undef ir užstato klaidos pranešimą į $@ . Jei failas sėkmingai sukompiliuojamas, do gražina paskutinio įvertinto pranešimo reikšmę.

    Pažymėtina, kad bibliotekos modulių įterpimas geriau būtų daromas su use ir require operatoriais, kurie taip pat automatiškai pratikrina klaidas ir reikalui esant iškelia prieštaravimą.

    Do gali kilti noras panaudoti programos konfigūraciniame faile. Rankinis klaidų tikrinimas gali būtų padarytas taip:

        # nuskaitomi config failai: pirmiausia sistemos, paskui vartotojo
        for $file ("/share/prog/defaults.rc",
                   "$ENV{HOME}/.someprogrc")
       {
    	unless ($return = do $file) {
    	    warn "couldn't parse $file: $@" if $@;
    	    warn "couldn't do $file: $!"    unless defined $return;
    	    warn "couldn't run $file"       unless $return;
    	}
        }
algirdas@perl.lt 2005.04.11 - $dabar