http://qs321.pair.com?node_id=721231


in reply to disable functions if module not installed

You might also want to use a block eval instead of a string eval. Block eval is for exception handling, string eval is for on-the-fly complilation.

If you're trying to debug this while running it as a CGI, you should serously look into CGI::Carp with particular attention to fatalstobrowser. Or you could do one better and debug it at a command line. It's a much better idea to make sure it compiles at a command line and then upload it to your web server.

--Pileofrogs

  • Comment on Re: disable functions if module not installed

Replies are listed 'Best First'.
Re^2: disable functions if module not installed
by lepetitalbert (Abbot) on Nov 03, 2008 at 22:40 UTC

    Hi almut and pileofrogs,

    almut your code gave me an out of memory too.

    pileofrogs fatalstobrowser is on. An example of one of these block eval's ?

    Thank you.

    "There is only one good, namely knowledge, and only one evil, namely ignorance." Socrates
      almut your code gave me an out of memory too.

      Weird.  Can you just plain load the module with use Image::Magick; (or require Image::Magick;)?  In case the machine (or user limit) doesn't provide sufficient memory to load the module (which in theory could be possible), I'd expect that you get "out of memory" either way.

      An example of one of these block eval's ?
      eval { require Image::Magick }; my $is_magick = $@ ? 0 : 1;

        Hi again

        use Image::Magick; works like a charm, am using it for weeks.

        eval { require Image::Magick }; my $is_Magick = $@ ? 0 : 1;

        produces out of memory too :(

        I have : XP, 2Gb ram, perl 5.10, IM 6.4.4-2, PerlMagick installed with IM installer

        Thanls again.

        "There is only one good, namely knowledge, and only one evil, namely ignorance." Socrates

      Read up on eval in [perlfunc].

      Short answer:

      Block

      eval { die "You commie!" };

      String

      my $death = 'die'; eval "$death \"You commie!\";"