http://www.perlmonks.org?node_id=515152


in reply to Using the perl modules depends upon the availability of another module.

It would be use Module1 || use Module2, but that doesn't work because use dies on failure. You might try to wrap the use in an eval BLOCK, but that doesn't work because of compile-time vs run-time issues. You could succeed, however, by following the advice given in "use" dynamic module. Alternativly, eval EXPR does the trick:

# Approximate # use Module1 || use Module2; BEGIN { eval qq{ use Module1 }; eval qq{ use Module2 } if not $@; die("Unable to load Module1 or Module2\n" if not $@; }

Replies are listed 'Best First'.
Re^2: Using the perl modules depends upon the availability of another module.
by PodMaster (Abbot) on Dec 08, 2005 at 08:15 UTC
    Alternatively, there is the if module
    use Module1; use if $INC{'Module1.pm'}, 'Module2';
    looks a little nicer, although I don't think I've ever actually used it.

    MJD says "you can't just make shit up and expect the computer to know what you mean, retardo!"
    I run a Win32 PPM repository for perl 5.6.x and 5.8.x -- I take requests (README).
    ** The third rule of perl club is a statement of fact: pod is sexy.

      It'll never get to the second line. If Module1 doesn't load, the first use will die.