This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
make 'require ::Foo::Bar' die
authorDavid Mitchell <davem@iabyn.com>
Sat, 19 Mar 2016 20:16:22 +0000 (20:16 +0000)
committerDavid Mitchell <davem@iabyn.com>
Tue, 10 May 2016 10:02:24 +0000 (11:02 +0100)
commit5bad2b3959332943ca48f8b4f44af83effad4314
tree782c3438248dc88f896c775678347f4c3ecf0797
parenta52f2cced5b51a96e90a2604111245e6096dae5b
make 'require ::Foo::Bar' die

Originally, 'require ::Foo::Bar' would try to load /Foo/Bar.pm.

The previous commit changed it so that  ::Foo::Bar mapped to Foo::Bar,
and so loaded Foo/Bar.pm in the @INC path.

This commit takes the different approach of, instead of mapping, making
any bareword require that starts with '::' into an error instead.

It introduces a new error message:

    $ perl -e'require ::Foo::Bar'
    Bareword in require must not start with a double-colon: "::Foo::Bar"
    $

See the thread at:
    http://www.nntp.perl.org/group/perl.perl5.porters/2012/07/msg189909.html

( I originally used '"::"' rather than 'a double-colon', but that
made the message a bit unpenetrable:

    Bareword in require must not start with "::": "::Foo::Bar"
)
ext/XS-APItest/t/load-module.t
op.c
pod/perldiag.pod
t/comp/require.t
t/op/require_errors.t