perl - ako osetrit neexistenciu importovaneho modulu

Sekcia: Programovanie 22.02.2010 | 11:43
stevo   Návštevník
zdravim,
chcem osetrit v skripte v perle vsetky mozne chybove stavy, aby sa v ziadnom pripade nestalo zeby cosi do konzoly vypisovalo prostredie perlu, mam tam importovane moduly a s tym mam problem. Predpokladal som ze mi bude fungovat toto:

eval 'use XBase';
if($@)
{
print "$verzia\n\n";
print "CHYBA: Modul XBase nie je nainstalovany. Pozri citajma.txt\n";
print " pre informacie o tom, ako modul nainstalovat.\n";
exit 1;
}

ale preprocesor perlu ma predbehne :( a vypise svoju chybovu hlasku. Nakopnite ma pls. na nejaky manual kde sa docitam ako sa to da riesit, vopred dakujem
    • Re: perl - ako osetrit neexistenciu importovaneho modulu 22.02.2010 | 15:11
      peter   Návštevník
      eval{
      require Chybajuci_module;
      };
      if ($@) {
      print "Chyba:", $@, "\n";
      };

      • Re: perl - ako osetrit neexistenciu importovaneho modulu 23.02.2010 | 21:09
        stevo   Návštevník
        vdaka, Peter. Vlastne funguje aj moj kod, nefungovalo mi toto:

        if(-f './moduly/Modul.pm')
        {
        use Modul.pm;
        } else { exit }

        mal som tam este zabudnuty takto importovany modul a nejako som ich poplietol :(
        • Re: perl - ako osetrit neexistenciu importovaneho modulu 23.02.2010 | 21:57
          peter   Návštevník
          a mas cestu k Modul.pm v @INC?

          http://www.brandonhutchinson.com/perl_inc.html
          • Re: perl - ako osetrit neexistenciu importovaneho modulu 24.02.2010 | 12:33
            stevo   Návštevník
            ano, mam, ten kod funguje pokial je Modul.pm tam kde ma byt., to "nefungoval" som myslel v kontexte uvodneho postu, ze som chcel osetrit chybu v mojom kode v pripade ze subor Modul.pm nebude tam kde ma byt. Blok else sa nevykona, vlastne sa skript ani nespusti, perlu sa ho nepodari skompilovat ak nenajde subor Modul.pm
            • Re: perl - ako osetrit neexistenciu importovaneho modulu 24.02.2010 | 21:08
              peter   Návštevník
              ak si dobre pamatam tak perl nacita _vsetky_ moduly v scripte uvedene pomocou use bez ohladu kde su (eval nepocitam)

              tu sa niekto pokusal presne o to o co ty:
              http://www.perlmonks.org/index.pl?node_id=323606