in reply to Re: Re: Re: Am I missing something here?
in thread Am I missing something here?

I'm sure your way is more efficient compared to calling a sub all the time, but I would definitely push for "use constant" in this scenario, especially if you're concerned with efficiency

Suppose the following is in a file called "":

*DEBUG = \1; use constant CONST_DEBUG => 1; $DEBUG && print "foo\n"; CONST_DEBUG && print "bar\n";

They look pretty much the same, but you should see the output of perl -MO=Deparse

## Output of perl -MO=Deparse on my machine with perl 5.6.1: *DEBUG=\(1); sub CONST_DEBUG() { package constant; $scalar; } print "foo\n" if $DEBUG; # <- $DEBUG must be evaluated each time print "bar\n"; # <- there's no evaluation... just straight print()'ing

There you see that the second option gives you a literal print "bar\n" without needing to evaluate another variable.

This is because of a couple of reasons: 1 - the perl compiler is smart enough to optimize away "real" constants... and 2 - *DEBUG = \1 is NOT a "real" constant. (You can always assign on top of *DEBUG if you so choose to).

Replies are listed 'Best First'.
Re: (lestrrat) Do use 'constant': Re(4): Am I missing something here?
by Biker (Priest) on Nov 09, 2001 at 01:18 UTC

    And Biker humbly bowes his head in respect. Amen.

    f--k the world!!!!
    /dev/world has reached maximal mount count, check forced.