This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix a perldelta typo
[perl5.git] / pod / perlrun.pod
index f510707..62c1ebb 100644 (file)
@@ -235,11 +235,13 @@ terminated by the null character, you can say this:
     find . -name '*.orig' -print0 | perl -n0e unlink
 
 The special value 00 will cause Perl to slurp files in paragraph mode.
-The value 0777 will cause Perl to slurp files whole because there is no
-legal byte with that value.
+Any value 0400 or above will cause Perl to slurp files whole, but by convention
+the value 0777 is the one normally used for this purpose.
 
-If you want to specify any Unicode character, use the hexadecimal
-format: C<-0xHHH...>, where the C<H> are valid hexadecimal digits.
+You can also specify the separator character using hexadecimal notation:
+C<-0xHHH...>, where the C<H> are valid hexadecimal digits.  Unlike the octal
+form, this one may be used to specify any Unicode character, even those beyond
+0xFF.
 (This means that you cannot use the C<-x> with a directory name that
 consists of hexadecimal digits.)
 
@@ -299,11 +301,11 @@ STDOUT and STDERR.  Repeating letters is just redundant, not cumulative
 nor toggling.
 
 The C<io> options mean that any subsequent open() (or similar I/O
-operations) will have the C<:utf8> PerlIO layer implicitly applied
-to them, in other words, UTF-8 is expected from any input stream,
-and UTF-8 is produced to any output stream.  This is just the default,
-with explicit layers in open() and with binmode() one can manipulate
-streams as usual.
+operations) in the current file scope will have the C<:utf8> PerlIO layer
+implicitly applied to them, in other words, UTF-8 is expected from any
+input stream, and UTF-8 is produced to any output stream.  This is just
+the default, with explicit layers in open() and with binmode() one can
+manipulate streams as usual.
 
 C<-C> on its own (not followed by any number or option list), or the
 empty string C<""> for the C<PERL_UNICODE> environment variable, has the
@@ -396,7 +398,7 @@ B<-D14> is equivalent to B<-Dtls>):
     32768  D  Cleaning up
    131072  T  Tokenising
    262144  R  Include reference counts of dumped variables (eg when using -Ds)
-   524288  J  Do not s,t,P-debug (Jump over) opcodes within package DB
+   524288  J  show s,t,P-debug (don't Jump over) on opcodes within package DB
   1048576  v  Verbose: use in conjunction with other flags
   2097152  C  Copy On Write
   4194304  A  Consistency checks on internal structures
@@ -405,7 +407,8 @@ B<-D14> is equivalent to B<-Dtls>):
  33554432  B  dump suBroutine definitions, including special Blocks like BEGIN
 
 All these flags require B<-DDEBUGGING> when you compile the Perl
-executable (but see L<Devel::Peek>, L<re> which may change this).
+executable (but see C<:opd> in L<Devel::Peek> or L<re/'debug' mode>
+which may change this).
 See the F<INSTALL> file in the Perl source distribution
 for how to do this.  This flag is automatically set if you include B<-g>
 option when C<Configure> asks you about optimizer/debugger flags.
@@ -440,7 +443,7 @@ behaves just like B<-e>, except that it implicitly enables all
 optional features (in the main compilation unit). See L<feature>.
 
 =item B<-f>
-X<-f>
+X<-f> X<sitecustomize> X<sitecustomize.pl>
 
 Disable executing F<$Config{sitelib}/sitecustomize.pl> at startup.
 
@@ -450,6 +453,28 @@ This is a hook that allows the sysadmin to customize how perl behaves.
 It can for instance be used to add entries to the @INC array to make perl
 find modules in non-standard locations.
 
+Perl actually inserts the following code:
+
+    BEGIN {
+        do { local $!; -f "$Config{sitelib}/sitecustomize.pl"; }
+            && do "$Config{sitelib}/sitecustomize.pl";
+    }
+
+Since it is an actual C<do> (not a C<require>), F<sitecustomize.pl>
+doesn't need to return a true value. The code is run in package C<main>,
+in its own lexical scope. However, if the script dies, C<$@> will not
+be set.
+
+The value of C<$Config{sitelib}> is also determined in C code and not
+read from C<Config.pm>, which is not loaded.
+
+The code is executed B<very> early. For example, any changes made to
+C<@INC> will show up in the output of `perl -V`. Of course, C<END>
+blocks will be likewise executed very late.
+
+To determine at runtime if this capability has been compiled in your
+perl, you can check the value of C<$Config{usesitecustomize}>.
+
 =item B<-F>I<pattern>
 X<-F>
 
@@ -1248,14 +1273,15 @@ See also hash_seed() of L<Hash::Util>.
 =item PERL_MEM_LOG
 X<PERL_MEM_LOG>
 
-If your perl was configured with C<-Accflags=-DPERL_MEM_LOG>, setting the
-environment variable C<PERL_MEMLOG> enables logging debug messages. The
-value has the form C<< <number>[m][s][t] >>, where C<number> is the
-filedescriptor number you want to write to, and the combination of letters
-specifies that you want information about (m)emory and/or (s)v, optionally
-with (t)imestamps. For example C<PERL_MEMLOG=1mst> will log all
-information to stdout. You can write to other opened filedescriptors too,
-in a variety of ways;
+If your perl was configured with C<-Accflags=-DPERL_MEM_LOG>, setting
+the environment variable C<PERL_MEM_LOG> enables logging debug
+messages. The value has the form C<< <number>[m][s][t] >>, where
+C<number> is the filedescriptor number you want to write to (2 is
+default), and the combination of letters specifies that you want
+information about (m)emory and/or (s)v, optionally with
+(t)imestamps. For example C<PERL_MEM_LOG=1mst> will log all
+information to stdout. You can write to other opened filedescriptors
+too, in a variety of ways;
 
   bash$ 3>foo3 PERL_MEM_LOG=3m perl ...