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


in reply to Re: Name "main::a" used only once: possible typo
in thread Name "main::a" used only once: possible typo

I guess List::Util::reduce does not pass the parameter pair at all to your function, it just localizes $a and $b with them.