This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta: Move section adjacent to similar one
authorKarl Williamson <khw@cpan.org>
Thu, 18 May 2017 04:51:46 +0000 (22:51 -0600)
committerKarl Williamson <khw@cpan.org>
Thu, 18 May 2017 05:14:20 +0000 (23:14 -0600)
These two sections about @INC and dot need to be combined into one,
and should be in Security.

I'll let someone else take a stab at that.

pod/perldelta.pod

index ccaf480..4978557 100644 (file)
@@ -80,27 +80,6 @@ For example:
 
 prints "Hello there\n" with no leading whitespace.
 
-=head2 '.' and @INC
-
-Since time immemorial Perl has, as a last resort, loaded libraries
-from the current directory. For security reasons this is no longer the
-case, the C<@INC> variable no longer contains C<.> as its last element
-by default.
-
-If you want to disable this behavior at compile-time build perl with
-C<-Udefault_inc_excludes_dot> (C<-Ddefault_inc_excludes_dot> being the
-default now).
-
-If you'd like to add C<.> back to C<@INC> at runtime set
-C<PERL_USE_UNSAFE_INC=1> in the environment before starting
-perl. Setting it to 1 restores C<.> in the C<@INC> when perl otherwise
-lacks it.
-
-Various toolchain modules will set C<PERL_USE_UNSAFE_INC=1>
-themselves. E.g. L<Test::Harness> sets it since loading modules from a
-relative path is a common idiom in test code. If you find that you
-have C<.> in C<@INC> on a perl built with default settings it's likely
-that your code is being invoked by a toolchain module of some sort.
 =head2 @{^CAPTURE}, %{^CAPTURE}, and %{^CAPTURE_ALL}
 
 C<@{^CAPTURE}> exposes the capture buffers of the last match as an
@@ -226,6 +205,28 @@ the end of the supplied buffer.
 
 =head1 Security
 
+=head2 '.' and @INC
+
+Since time immemorial Perl has, as a last resort, loaded libraries
+from the current directory. For security reasons this is no longer the
+case.  This is controlled by the C<@INC> variable, and it no longer
+defaults to containing C<.> as its last element.
+
+If you want to disable this behavior at compile-time, build perl with
+C<-Udefault_inc_excludes_dot> (C<-Ddefault_inc_excludes_dot> being the
+default now).
+
+If you'd like to add C<.> back to C<@INC> at runtime set
+C<PERL_USE_UNSAFE_INC=1> in the environment before starting
+perl. Setting it to 1 restores C<.> in the C<@INC> when perl otherwise
+lacks it.
+
+Various toolchain modules will set C<PERL_USE_UNSAFE_INC=1>
+themselves. E.g. L<Test::Harness> sets it since loading modules from a
+relative path is a common idiom in test code. If you find that you
+have C<.> in C<@INC> on a perl built with default settings it's likely
+that your code is being invoked by a toolchain module of some sort.
+
 =head2 Removal of the current directory (C<.>) from C<@INC>
 
 The perl binary includes a default set of paths in C<@INC>. Historically