in reply to Re: All uppercase subs
in thread All uppercase subs

Death to use constant! I've never seen the appeal of use constant, and with modern Perls, it's completely unnecessary.
I must say that you have strong arguments. Though I feel that constant.pm has some appeal. Besides, being "constants" really subs with an empty prototype and being subs with an empty prototype optimized away, they're really close to being real constants. Some times I roll my own pseudo-constants (when I need them to be closures), e.g.:
use File::Basename; { my $name=basename $0; sub USAGE () { "Usage: $name [options] <args>\n" } } die USAGE unless @ARGV;
You can't easily interpolate 'constants' as they lack the sigil, and because of that, they also get auto-quoted on the left of a fat arrow, or if it's the only thing in a hash index.
Excellent points! Especially the latter. As far as the first goes, I occasionally use constant.pm's constants, but I hardly ever felt the need to interpolate any.
Furthermore, if you see:
my $variable = ALL_CAPS + 1;
does that mean that $variable becomes one more than the constant ALL_CAPS, or does $variable get the result of ALL_CAPS(1)?
Here I disagree. It is obvious that it is "one more than the constant ALL_CAPS", for the same reason as above about empty prototypes.
Luckely, there's Readonly.pm:
use Readonly; Readonly my $PI => 4 * atan2(1, 1); Readonly my $DEBUG => 0;
Much better, IMO.
I don't happen to use it. But indeed it's a good module, I suspect that it may introduce some overhead and maybe for "DEBUG"-like stuff constant.pm may be preferable.