Scuse me...I just realized that I missed an edit in my previous post. The
[1] that you see was intended to be a footnote talking about the
possibility of conflicting namespace aliases. When I expanded that into
the final couple paragraphs, I forgot to take out the [1]. Sorry for the
confusion.
Dave
On Wed, 13 Sep 2000, Dave Storrs wrote:
> How about if we added a list, @NAMES, into which you could assign
> namespace shortcuts, something like this:
>
> package main;
>
> push @NAMES, ("A::B::C" => 'ABC',
> "X::Y::Z" => 'XYZ',
> "StupidlyLongMathThingie" => "SLMT",
> "Bar::Baz" => ""
> );
>
> ABC::do_stuff(); # prints "ABC";
> XYZ::do_stuff(); # prints "XYZ";
> SLMT::do_stuff(); # prints "4";
> # do_stuff(); # [1]
>
>
> sub do_stuff() { print "main"; }
>
> package A::B::C;
> sub do_stuff() { print "ABC"; }
>
> package X::Y::Z;
> sub do_stuff() { print "XYZ"; }
>
> package StupidlyLongMathThingie;
> sub do_stuff() { print 2 + 2; }
>
> package Bar::Baz;
> sub do_stuff() { print "barbaz"; }
> __END__
>
> Whenever the interpreter saw a namespace usage, it would need to
> check @NAMES in addition to checking the included modules list.
>
> The problem comes when the user aliases two different namespaces
> to the same alias (e.g., "Foobar" => "F", "Foxtrot" => "F")
>
> In this case, if the usage is unambiguous (e.g., F::do_foxtrot(),
> and the Foobar module does not contain a sub by that name), then perl
> should raise a warning but go ahead and execute. If the usage is
> ambiguous, this should be a fatal error.
>
>
> Dave
>
>