http://qs321.pair.com?node_id=582267


in reply to Re: Why " subroutined redefined" warning comes?
in thread Why " subroutined redefined" warning comes?

Obviously Spinner.pm is exporting the function into the MAIN namespace. Stop it exporting, then you can do:
use Spinner.pm; for (1 .. 1000) { Spinner::spin(); } sub spin { print "i am the second spin() sub\n"; }
and you don't have a duplicate. Depending on the internals of Spinner, you may be able to do:
use Spinner();
to stop it importing into the MAIN namespace.

jdtoronto

Replies are listed 'Best First'.
Re^3: Why " subroutined redefined" warning comes?
by joeface (Pilgrim) on Nov 04, 2006 at 20:44 UTC

    Ahhhh... learned something new, thanks to your reply.

    So, yes, I want Spinner to export the spin() function, to save me from having to do Spinner::spin(), but now I know why I have it that way, and what to change if I decide not to export it.

    You've also shown us a different way to keep the subs separate, if need be.

    Thanks!

      An option if you don't import it is to alias it to another name in your package.

      use Spinner (); local *s_pin = \&Spinner::spin; s_pin(); spin();