in reply to Lexical and dynamic scope confusion!

Another way to avoid this namespace conflicts is just do not import functions from other modules into yours.
use CGI (); # call CGI's sub1 CGI::sub1(); # your sub1 sub1();
Boris

Replies are listed 'Best First'.
Re^2: Lexical and dynamic scope confusion!
by dragonchild (Archbishop) on Mar 28, 2005 at 13:53 UTC
    That will normally work, yes. However, some modules will only create functions when they are asked for in the use-line. So, doing something like:
    use Foo qw( bar ); bar();
    will work, but doing this won't:
    use Foo; Foo::bar(); # <-- BOOM!

    CGI isn't one of these, but the possibility is there.

    Being right, does not endow the right to be rude; politeness costs nothing.
    Being unknowing, is not the same as being stupid.
    Expressing a contrary opinion, whether to the individual or the group, is more often a sign of deeper thought than of cantankerous belligerence.
    Do not mistake your goals as the only goals; your opinion as the only opinion; your confidence as correctness. Saying you know better is not the same as explaining you know better.