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


in reply to Re: Conditionally faking a module
in thread Conditionally faking a module

Unfortunately, your example doesn't work:

eval "use Cava::Pack" or do { die "Using faked out Cava::Pack\n"; }

I see the "Using faked out Cava::Pack" message on both Linux and Win32 (where Cava::Pack is indeed available).

Replies are listed 'Best First'.
Re^3: Conditionally faking a module
by bobf (Monsignor) on Jan 13, 2010 at 19:14 UTC
Re^3: Conditionally faking a module
by Anonymous Monk on Jan 13, 2010 at 21:27 UTC
    That is the reason for a true value, 1
    eval "use Cava::Pack; 1" or die "Oh noes! $@"; eval "use HOW::Cava::Pack; 1" or die "HOW!?! $@"; __END__ HOW!?! Can't locate HOW/Cava/Pack.pm in @INC (@INC contains: C:/perl/5 +.10.1/lib/MSWin32-x86-multi-thread C:/perl/5.10.1/lib C:/perl/site/5. +10.1/lib/MSWin32-x86-multi-thread C:/perl/site/5.10.1/lib .) at (eval + 2) line 1. BEGIN failed--compilation aborted at (eval 2) line 1.
    Hmm, I don't recall installing Cava::Pack :)
Re^3: Conditionally faking a module
by ikegami (Patriarch) on Jan 15, 2010 at 18:01 UTC

    The code being executed by eval ("") returns nothing (()), which is indistinguishable from the value eval returns on failure.

    You need

    eval "use Cava::Pack; 1"