in reply to Re: What happens when you load the same module twice?
in thread What happens when you load the same module twice?

I thought his question was why do the warnings go away when you add () to one of the use statments. I'm not sure how your answer answers that.


___________
Eric Hodges
  • Comment on Re^2: What happens when you load the same module twice?

Replies are listed 'Best First'.
Re^3: What happens when you load the same module twice?
by weierophinney (Pilgrim) on Feb 10, 2005 at 18:54 UTC
    Because calling 'use File::Basename();' tells the compiler to import an empty list -- in other words, do not import anything. The issue at hand is that File::Basename and File::Basename are both trying to import subroutines into the main:: namespace by default.

      So the import is the part that is creating redifined errors not the processing of the module file?


      ___________
      Eric Hodges
      No. It has nothing at all to do with importing names twice. Not convinced? Run this code:
      #!/usr/bin/perl use strict; use warnings; use File::Basename (); # Not calling import! BEGIN {delete $INC{"File/Basename.pm"}}; use File::Basename (); # Not calling import! __END__ Subroutine fileparse_set_fstype redefined at /usr/lib/perl5/lib/5.8.6/ +File/Basename.pm line 157. Subroutine fileparse redefined at /usr/lib/perl5/lib/5.8.6/File/Basena +me.pm line 171. Subroutine basename redefined at /usr/lib/perl5/lib/5.8.6/File/Basenam +e.pm line 238. Subroutine dirname redefined at /usr/lib/perl5/lib/5.8.6/File/Basename +.pm line 251.
      Can we now please stop this myth that redefining subroutines has anything to do with import?