On 10/27/05, Larry Wall <[EMAIL PROTECTED]> wrote:
> On Thu, Oct 27, 2005 at 05:37:13AM -0400, Rob Kinyon wrote:
> : Will I be able to do something like:
> :
> : package Foo;
>
> Hmm, you just started in Perl 5 mode.
>
> : $*VERSION = 1.3.2;
>
> Perl 5 would get confused here, so I'm presuming Perl 6.  But Perl 6
> isn't likely to let you override the global run-time Perl version.
>
> : use Foo-1.3.1;
>
> That I think I understand.
>
> : role My::Foo { does Foo; ... }
>
> Okay, My::Foo does Foo here.  Presumably it must "do" the Foo alias
> that the use just installed.  And presumably the Foo you just used
> is a role that can be "done".  Certainly you can't "do" the global
> package Foo, assuming that's what your original package declared.
>
> : alias My::Foo -> Foo; # Or whatever the syntax should be
>
> I have no clue where you're intending to install that alias.
> Are you trying to install a *Foo alias?  A bare Foo is going to first
> find the local alias to the Foo you used, and that hides the global
> Foo that it would have found otherwise.  I suspect you're trying to
> say
>
>     *Foo := My::Foo;
>
> : And, in my other code, "use Foo;" will DWIM?
>
> I don't know quite what you mean, so I don't know if it'll do what
> you mean.  If you're trying to establish a policy that defaults a
> particular name to a particular version, the library interface will
> probably give you a more straightforward way to set that up.

Sorry. I'm not up on the syntax. I should do some serious backlog reading.

What I'm trying to do is load role Foo 1.0, have My::Foo do Foo, then
call My::Foo version 2.0 of Foo so that anyone else in my program will
see My::Foo instead of the original Foo. Is this possible?

Rob

Reply via email to