in reply to RE: RE: RE: Checking to see if a particular Module is installed
in thread Checking to see if a particular Module is installed
Your code fails to import prototypes early enough (at compile time) to influence
the proper parsing of the later code. For example, say a constant was defined
in GD as:
update: Get rid of the "= 0" on the intialization. Sorry.
Your code would cause this to be misparsed:package GD; sub BIGFONT () { 35 }
because without the empty prototype, BIGFONT is a normal subroutine, and the +3 will be parsed as an argument to the subroutine. With the prototype, we get the proper behavior (and even compile-time constant folding). So, with compile-time importing, we get 38 for the answer, and without, we get 35.my $result = BIGFONT + 3;
So, to fix this, wrap my code in a BEGIN block, like so:
Your code does OK without considering prototypes. You haven't been burned, but I'd add the word "yet" there.my $have_GD = 0; BEGIN { eval { require GD }; unless ($@) { GD->import(); $have_GD = 1; } }
-- Randal L. Schwartz, Perl hacker
update: Get rid of the "= 0" on the intialization. Sorry.
In Section
Seekers of Perl Wisdom