This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for #47047 / 1de22db27a
[perl5.git] / pod / perlrun.pod
index 05dea4e..12cba35 100644 (file)
@@ -34,7 +34,7 @@ Specified line by line via B<-e> or B<-E> switches on the command line.
 
 Contained in the file specified by the first filename on the command line.
 (Note that systems supporting the C<#!> notation invoke interpreters this
-way. See L<Location of Perl>.)
+way. See L</Location of Perl>.)
 
 =item 3.
 
@@ -93,7 +93,7 @@ getting whatever version is first in the user's path.  If you want
 a specific version of Perl, say, perl5.14.1, you should place
 that directly in the C<#!> line's path.
 
-If the C<#!> line does not contain the word "perl" nor the word "indir"
+If the C<#!> line does not contain the word "perl" nor the word "indir",
 the program named after the C<#!> is executed instead of the Perl
 interpreter.  This is slightly bizarre, but it helps people on machines
 that don't do C<#!>, because they can tell a program that their SHELL is
@@ -220,6 +220,9 @@ clustered with the following switch, if any.
 
     #!/usr/bin/perl -spi.orig  # same as -s -p -i.orig
 
+A C<--> signals the end of options and disables further option processing. Any
+arguments after the C<--> are treated as filenames and arguments.
+
 Switches include:
 
 =over 5
@@ -265,6 +268,8 @@ is equivalent to
 
 An alternate delimiter may be specified using B<-F>.
 
+B<-a> implicitly sets B<-n>.
+
 =item B<-C [I<number/list>]>
 X<-C>
 
@@ -285,7 +290,7 @@ are as follows; listing the letters is equal to summing the numbers.
               in UTF-8
     L    64   normally the "IOEioA" are unconditional, the L makes
               them conditional on the locale environment variables
-              (the LC_ALL, LC_TYPE, and LANG, in the order of
+              (the LC_ALL, LC_CTYPE, and LANG, in the order of
               decreasing precedence) -- if the variables indicate
               UTF-8, then the selected "IOEioA" are in effect
     a   256   Set ${^UTF8CACHE} to -1, to run the UTF-8 caching
@@ -374,53 +379,60 @@ X<-D> X<DEBUGGING> X<-DDEBUGGING>
 
 =item B<-D>I<number>
 
-sets debugging flags.  To watch how it executes your program, use
-B<-Dtls>.  (This works only if debugging is compiled into your
-Perl.)  Another nice value is B<-Dx>, which lists your compiled
-syntax tree.  And B<-Dr> displays compiled regular expressions;
-the format of the output is explained in L<perldebguts>.
+sets debugging flags. This switch is enabled only if your perl binary has
+been built with debugging enabled: normal production perls won't have
+been.
+
+For example, to watch how perl executes your program, use B<-Dtls>.
+Another nice value is B<-Dx>, which lists your compiled syntax tree, and
+B<-Dr> displays compiled regular expressions; the format of the output is
+explained in L<perldebguts>.
 
 As an alternative, specify a number instead of list of letters (e.g.,
 B<-D14> is equivalent to B<-Dtls>):
 
-        1  p  Tokenizing and parsing (with v, displays parse stack)
-        2  s  Stack snapshots (with v, displays all stacks)
-        4  l  Context (loop) stack processing
-        8  t  Trace execution
-       16  o  Method and overloading resolution
-       32  c  String/numeric conversions
-       64  P  Print profiling info, source file input state
-      128  m  Memory and SV allocation
-      256  f  Format processing
-      512  r  Regular expression parsing and execution
-     1024  x  Syntax tree dump
-     2048  u  Tainting checks
-     4096  U  Unofficial, User hacking (reserved for private,
-              unreleased use)
-     8192  H  Hash dump -- usurps values()
-    16384  X  Scratchpad allocation
-    32768  D  Cleaning up
-    65536  S  Op slab allocation
-   131072  T  Tokenizing
-   262144  R  Include reference counts of dumped variables (eg when
-              using -Ds)
-   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
-  8388608  q  quiet - currently only suppresses the "EXECUTING"
-              message
- 16777216  M  trace smart match resolution
- 33554432  B  dump suBroutine definitions, including special Blocks
-              like BEGIN
+         1  p  Tokenizing and parsing (with v, displays parse
+               stack)
+         2  s  Stack snapshots (with v, displays all stacks)
+         4  l  Context (loop) stack processing
+         8  t  Trace execution
+        16  o  Method and overloading resolution
+        32  c  String/numeric conversions
+        64  P  Print profiling info, source file input state
+       128  m  Memory and SV allocation
+       256  f  Format processing
+       512  r  Regular expression parsing and execution
+      1024  x  Syntax tree dump
+      2048  u  Tainting checks
+      4096  U  Unofficial, User hacking (reserved for private,
+               unreleased use)
+      8192  H  Hash dump -- usurps values()
+     16384  X  Scratchpad allocation
+     32768  D  Cleaning up
+     65536  S  Op slab allocation
+    131072  T  Tokenizing
+    262144  R  Include reference counts of dumped variables
+               (eg when using -Ds)
+    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
+   8388608  q  quiet - currently only suppresses the "EXECUTING"
+               message
+  16777216  M  trace smart match resolution
+  33554432  B  dump suBroutine definitions, including special
+               Blocks like BEGIN
+  67108864  L  trace Locale-related info; what gets output is very
+               subject to change
+ 134217728  i  trace PerlIO layer processing.  Set PERLIO_DEBUG to
+               the filename to trace to.
 
 All these flags require B<-DDEBUGGING> when you compile the Perl
 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.
+for how to do this.
 
 If you're just trying to get a print out of each line of Perl code
 as it executes, the way that C<sh -x> provides for shell scripts,
@@ -487,9 +499,11 @@ perl, you can check the value of C<$Config{usesitecustomize}>.
 =item B<-F>I<pattern>
 X<-F>
 
-specifies the pattern to split on if B<-a> is also in effect.  The
-pattern may be surrounded by C<//>, C<"">, or C<''>, otherwise it will be
-put in single quotes. You can't use literal whitespace in the pattern.
+specifies the pattern to split on for B<-a>. The pattern may be
+surrounded by C<//>, C<"">, or C<''>, otherwise it will be put in single
+quotes. You can't use literal whitespace in the pattern.
+
+B<-F> implicitly sets both B<-a> and B<-n>.
 
 =item B<-h>
 X<-h>
@@ -664,7 +678,8 @@ B<-mI<MODULE>=foo,bar> or B<-MI<MODULE>=foo,bar> as a shortcut for
 B<'-MI<MODULE> qw(foo bar)'>.  This avoids the need to use quotes when
 importing symbols.  The actual code generated by B<-MI<MODULE>=foo,bar> is
 C<use module split(/,/,q{foo,bar})>.  Note that the C<=> form
-removes the distinction between B<-m> and B<-M>.
+removes the distinction between B<-m> and B<-M>; that is,
+B<-mI<MODULE>=foo,bar> is the same as B<-MI<MODULE>=foo,bar>.
 
 A consequence of this is that B<-MI<MODULE>=number> never does a version check,
 unless C<I<MODULE>::import()> itself is set up to do a version check, which
@@ -696,9 +711,10 @@ at least a week:
     find . -mtime +7 -print | perl -nle unlink
 
 This is faster than using the B<-exec> switch of I<find> because you don't
-have to start a process on every filename found.  It does suffer from
-the bug of mishandling newlines in pathnames, which you can fix if
-you follow the example under B<-0>.
+have to start a process on every filename found (but it's not faster
+than using the B<-delete> switch available in newer versions of I<find>.
+It does suffer from the bug of mishandling newlines in pathnames, which
+you can fix if you follow the example under B<-0>.
 
 C<BEGIN> and C<END> blocks may be used to capture control before or after
 the implicit program loop, just as in I<awk>.
@@ -912,19 +928,19 @@ can disable or promote into fatal errors specific warnings using
 C<__WARN__> hooks, as described in L<perlvar> and L<perlfunc/warn>.
 See also L<perldiag> and L<perltrap>.  A fine-grained warning
 facility is also available if you want to manipulate entire classes
-of warnings; see L<warnings> or L<perllexwarn>.
+of warnings; see L<warnings>.
 
 =item B<-W>
 X<-W>
 
 Enables all warnings regardless of C<no warnings> or C<$^W>.
-See L<perllexwarn>.
+See L<warnings>.
 
 =item B<-X>
 X<-X>
 
 Disables all warnings regardless of C<use warnings> or C<$^W>.
-See L<perllexwarn>.
+See L<warnings>.
 
 =item B<-x>
 X<-x>
@@ -1141,19 +1157,22 @@ is run in taint mode.
 =item PERLIO_DEBUG
 X<PERLIO_DEBUG>
 
-If set to the name of a file or device, certain operations of PerlIO
-subsystem will be logged to that file, which is opened in append mode.
-Typical uses are in Unix:
+If set to the name of a file or device when Perl is run with the
+B<-Di> command-line switch, the logging of certain operations of
+the PerlIO subsystem will be redirected to the specified file rather
+than going to stderr, which is the default. The file is opened in append
+mode. Typical uses are in Unix:
 
-   % env PERLIO_DEBUG=/dev/tty perl script ...
+   % env PERLIO_DEBUG=/tmp/perlio.log perl -Di script ...
 
 and under Win32, the approximately equivalent:
 
    > set PERLIO_DEBUG=CON
-   perl script ...
+   perl -Di script ...
 
-This functionality is disabled for setuid scripts and for scripts run
-with B<-T>.
+This functionality is disabled for setuid scripts, for scripts run
+with B<-T>, and for scripts run on a Perl built without C<-DDEBUGGING>
+support.
 
 =item PERLLIB
 X<PERLLIB>
@@ -1267,7 +1286,7 @@ randomized to protect against local and remote attacks against Perl
 code. By manually setting a seed, this protection may be partially or
 completely lost.
 
-See L<perlsec/"Algorithmic Complexity Attacks"> and L</PERL_PERTURB_KEYS>
+See L<perlsec/"Algorithmic Complexity Attacks">, L</PERL_PERTURB_KEYS>, and
 L</PERL_HASH_SEED_DEBUG> for more information.
 
 =item PERL_PERTURB_KEYS
@@ -1316,7 +1335,7 @@ C<key_traversal_mask()> in L<Hash::Util>.
 
 An example output might be:
 
   HASH_FUNCTION = ONE_AT_A_TIME_HARD HASH_SEED = 0x652e9b9349a7a032 PERTURB_KEYS = 1 (RANDOM)
+ HASH_FUNCTION = ONE_AT_A_TIME_HARD HASH_SEED = 0x652e9b9349a7a032 PERTURB_KEYS = 1 (RANDOM)
 
 =item PERL_MEM_LOG
 X<PERL_MEM_LOG>