Pathologically Eclectic Rubbish Lister | |
PerlMonks |
Re^3: On Backwards Compatibility and Bareword Filehandlesby chromatic (Archbishop) |
on Jul 18, 2020 at 18:05 UTC ( [id://11119500]=note: print w/replies, xml ) | Need Help?? |
Existing convention discourages naming subroutines or packages in ALL UPPERCASE anyway, and I do not suggest changing that. Sure, but I provided two widely-used examples that violate this convention. I could also mention LWP, DBI, CGI.... An explicit "::" can be prefixed to top-level packages when needed or assumed when no parse conflict exists. The problem is I don't know when a parse conflict will exist. If I write code with a bareword filehandle in a module, I don't know how that module will be used. I don't know when it will be loaded. I don't know what will be loaded before it and I don't know what will be loaded after it. If the parser parses this construct in different ways depending on what's loaded, it's fragile and undecidable. An explicit "::" can be prefixed to top-level packages when needed or assumed when no parse conflict exists. I don't see how this solves my problem here. I don't want to refer to a top-level package. I want a bareword filehandle (for the sake of argument, at least—I don't want bareword filehandles at all, because of this problem). Even if this did solve the problem, I don't think it's worth the tradeoff. Now you've introduced another implicit rule, which is that we must prefix all single-word package names to avoid any potential conflict with a bareword filehandle somewhere. I use a lot more package names than I do filehandles.
In Section
Meditations
|
|