That might be a fine module and I'll check it out, but it does not answer the question posed: is this commonly accepted practice of using upper-case constant names directly clash with another commonly accepted practice of not naming subroutines in all caps?
| [reply] |
constant.pm actually is creating subroutines. I picked up a copy of Perl Best Practices, in which Damian Conway recommends Readonly.pm for the exact reasont that you stated.
I'm not sure what you're looking for here. The "best practices" are constantly evolving as new and interesting modules enter the fray. Program the way that makes sense to you. Following best practices is encouraged but not required and not always the best solution.
Typically uppercase subroutines signify that they'll be called by some internals. This isn't set in stone as heredocs and labels typcially use all caps as well. Generally you need to establish context to determine how in accordance with best practice a particular piece of code is.
It makes sense for a constant to be a variable, which is why I like Readonly. I have run into issues where a Readonly array is actually useful. It doesn't happen daily, but when it does rear it's head, I like to address it with Readonly.pm rather than some copying hack.
If you want to get into the philosophy of when and where to hold down shift, perhaps starting a thread on Meditations would be a better fit.
| [reply] |
| [reply] |
"It makes sense for a constant to be a variable"
Reading that made me dizzy. ;) Seriously though thats a bit counter intuitive sounds like "it makes since for 4 to be 2." Not trying to start a debate, just suggesting maybe you find a different phrase, maybe "it makes sense to be able to mark variables as constant", though that still has the same ring to it. Having neither used Readonly or constant I guess I'll be quiet.
| [reply] |