_  _   ,_
/^\/^\-/ @D
~(________/ PERL.LT
|L |L
L L
Straipsniai  Funkcijos 
Funkcijos/warn - išvesti debuginimo informaciją
  • warn LIST

    Duoda STDERR žinutę, kaip kad die, bet ne išeina ir neišmeta prieštaravimo.

    Jei LIST tuščias, o $@ jau turi reikšmę (dažniausiai iš prieš tai ėjusio eval), ta reikšmė yra naudojama po pridedamo "\t...caught" $@ . Tai naudinga, nes yra beveik, tačiau ne visiškai kaip die.

    Jei $@ tuščias, tada stringas "Warning: Something's wrong" naudojamas.

    Neišvedama jokia žinutė, jei yra įdiegtas $SIG{__WARN__} valdiklis. Tai yra valdiklio atsakomybė tvarkytis su žinute kaip jam tinkama (kaip, pvz., paversti ją į die). Dauguma valdikliu privalo pasirengti iš tikro parodyti įspėjimus, su kuriais nėra pasirengę tvarkytis, iškviesdami warn valdiklyje. Įsidėmėkite, kad tai saugu ir nepadarys begalinio ciklo, nebent __WARN__ kabliukai (hooks) nėra iškviečiami iš labiausiai vidinio.

    Pamatysite, kad ši elgsena kiek kitokia nuo $SIG{__DIE__} valdiklių (kurie nesuspaudžia klaidos teksto, bet geriau iškviečia die vėl, kad jį pakeistų).

    Naudojant __WARN__ valdiklį atsiranda galingas būdas nutildyti visus įspėjimus (taip vadinamus būtinuosius). Pavyzdys:

        # wipe out *all* compile-time warnings
        BEGIN { $SIG{'__WARN__'} = sub { warn $_[0] if $DOWARN } }
        my $foo = 10;
        my $foo = 20;          # no warning about duplicate my $foo,
                               # but hey, you asked for it!
        # no compile-time or run-time warnings before here
        $DOWARN = 1;
        # run-time warnings enabled after here
        warn "\$foo is alive and $foo!";     # does show up

    Žr. perlvar dėl deatlių %SIG elementų nustatymams ir daugiau pavyzdžių. Žr. Carp modulį kitoms įspėjimų rūšims, naudojant carp() ir cluck() funkcijas.

algirdas@perl.lt 2005.04.11 - $dabar