looks similar to: https://rt.perl.org/Public/Bug/Display.html?id=130535

require seems to be pretty broken since the lexical module thing.
Unfortunately our tests weren't good enough to pick this up ( I think it's
because it's being required dynamically outside the mainline).

LL

On Sat, Feb 4, 2017 at 4:32 PM Fields, Christopher J <cjfie...@illinois.edu>
wrote:

> Ah, okay, I missed that it isn’t in the ‘require’ but in the symbol lookup
> afterwards.  Okay, I think this makes some sense (I’ll look through docs to
> see if it goes with what is mentioned there), though it is a bit
> inconsistent in behavior with the base ‘fasta' module working while the
> nested ones (‘Bio::fasta’, ‘Bio::SeqIO::fasta’) don't.
>
>
>
> On 2/3/17, 7:38 AM, "Chris Fields via RT" <perl6-bugs-follo...@perl.org>
> wrote:
>
> >Thanks nine.  My suggestion is that it's at the very least a buglet, in
> that there isn't consistency with how modules are loaded (note the module
> in the base directory, 'fasta', worked).
> >
> >If the syntax stays, I also think it's worth noting this behavior in the
> docs and pointing out why it's set up this way, both of the following imply
> the 'require ::($foo)' should work, but maybe this wasn't worked out prior
> to lexical module fixes?
> >
> >https://docs.perl6.org/syntax/require
> >https://docs.perl6.org/language/packages#index-entry-%3A%3A%28%29
> >
> >On Fri, 03 Feb 2017 02:34:45 -0800, n...@detonation.org wrote:
> >> The issue can be worked around/fixed with the following patch:
> >>
> >> diff --git a/lib/Bio/SeqIO.pm6 b/lib/Bio/SeqIO.pm6
> >> index 9ee4980..710dec4 100644
> >> --- a/lib/Bio/SeqIO.pm6
> >> +++ b/lib/Bio/SeqIO.pm6
> >> @@ -10,10 +10,10 @@ class Bio::SeqIO {
> >>              require ::($format);
> >>          };
> >>
> >> -        if ::($format) ~~ Failure {
> >> +        if MY::{$format} ~~ Failure {
> >>              die "Can't load $format: $!";
> >>          } else {
> >> -            $!plugin = ::($format).new();
> >> +            $!plugin = MY::{$format}.new();
> >>          }
> >>      }
> >>  }
> >>
> >> As the symbols are imported lexically, you will find them in the
> >> lexical (MY) scope. I'm not sure if this should be considered a bug or
> >> not. I'm not familiar enough with the thoughts that went into the
> >> design. It's certainly a pitty, that ::() which is quite short became
> >> less useful and users have to use the longer MY::() instead.
> >
> >
>

Reply via email to