http://www.perlmonks.org?node_id=1047109


in reply to Re^3: Eliminating "used only once" warnings from List::Util::reduce
in thread Eliminating "used only once" warnings from List::Util::reduce

Yes, that's the problem with simple fixes. I actually thought of something similar to the BEGIN{ $main::a... trick and submitted it months ago for List::MoreUtils::pairwise, where it was eventually pointed out (as I should have realized myself) that it would only work for the first invocant of use Modulename.

On the other hand, import does have caller context. So a fix could be applied within import. But as I mentioned in another post in this thread, that wouldn't solve times where the user skips import with "use List::Util ();, and then fully-qualifies List::Util::reduce in his code.

So, this can be mostly fixed by overriding import. But probably instead should be fixed within the Perl interpreter so as to special-case $a and $b further. They already have special case treatment for strict vars. One step further isn't going to suddenly allow a bunch of "only once" bugs to slip through people's code.


Dave

Replies are listed 'Best First'.
Re^5: Eliminating "used only once" warnings from List::Util::reduce
by BrowserUk (Patriarch) on Jul 30, 2013 at 19:33 UTC
    But probably instead should be fixed within the Perl interpreter so as to special-case $a and $b further.

    I always thought that it would be (would have been) better to use $A & $B for this instead.

    That might at least prevent all these pointless "Don't use $a & $b" pseudo-commandments.


    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.