No such thing as a small change | |
PerlMonks |
Re^6: Is there a problem with using barewords as filehandles ?by haukex (Archbishop) |
on Jul 07, 2020 at 09:34 UTC ( [id://11118995]=note: print w/replies, xml ) | Need Help?? |
a typo ... will produce a warning I know, since I'm the one who corrected you about this. And since lexicals cause compile-time errors, this is an argument for lexicals instead of bareword filehandles. "being careful" ... conventions ... in good practice These three are the same thing, and we've been over this too. Bareword filehandles do not clash with sub names at all You're mistaken, see the references I gave. That was not specific to filehandles ... These scopes have the same extent. Once again you're just explaining something to me that I already know, while missing the point I was making: you said lexicals have an additional risk, which I agreed with, while pointing out that the scope of the potential issue is both easily remedied and the issue arguably smaller than all the issues that bareword filehandles have. A lexical declared at file-scope is indistinguishable from a global variable in good practice. There's that insistence again. And just in case your point happens to be that code using bareword filehandles, when correctly written, runs just like code using lexicals, then while true, I think this fails to recognize the action-at-a-distance issue I named. While the cost of this may not be immediately apparent and you may not have personally run into this so you may not know this feeling, ask anyone who's had to maintain code that uses globals how brittle that feels, or especially anyone who's had to debug an action-at-a-distance bug what that's like and what the cost was. I find similar insistences that a lexical declared at file-scope is somehow not effectively a global variable merely because it is not in the symbol table similarly misleading. Who's insisting this?? Not me... Lexical variables declared at file scope have the same risks as global variables (use strict / use vars) and need to be recognized as such. Once again I fail to see how this has anything to do with an argument for using bareword filehandles instead of lexicals. At file-scope, lexicals have the same problem. That lexicals and barewords share an issue or two may be true, but neither is this a counterargument to anything I said, nor is this what you said that I was responding to. Saying barewords have "exactly the same effect" while not acknowledging that barewords have more problems than lexicals is misleading and potentially dangerous to people who aren't aware of the issues. Imagine someone writing a short, single-package daemon:
Lexicals would have obviously prevented this. And yes, I'm aware of "but conventions" and "but warnings" and "but testing" - I find the analogy in the anonymous post fitting: my car may or may not have a crumple Taking a step back, at this point I'm just seeing a lot of nitpicking, explaining things I know, and repetitions of things we've been over, and continuing the "discussion" in this manner is not helpful. So far, I've carefully read all of your posts in hopes that I'd find an actual, concrete argument for bareword filehandles (as I asked), and also arguments against the various issues that I named (that isn't nitpicking), because I was honestly curious if either exist. But at this point I'm more worried that I've insulted your personal coding style, which I said isn't why I'm arguing this, so I'm sorry if that's the case. What I'm arguing for is what to recommend to others, in particular (but not limited to) newcomers - in that respect, my viewpoint remains unchanged from what I said: I don't really see what arguments for bareword filehandles are left, other than making newcomers to the language aware of the fact that they exist but are not a best practice. Edit: Clarified second paragraph.
In Section
Seekers of Perl Wisdom
|
|