[win32] various tweaks to makefiles
[p5sagit/p5-mst-13.2.git] / pod / perlrun.pod
index 61e40f8..8717349 100644 (file)
@@ -62,12 +62,17 @@ getting a - instead of a complete switch could cause Perl to try to
 execute standard input instead of your script.  And a partial B<-I> switch
 could also cause odd results.
 
+Some switches do care if they are processed twice, for instance combinations
+of B<-l> and B<-0>.  Either put all the switches after the 32 character
+boundary (if applicable), or replace the use of B<-0>I<digits> by 
+C<BEGIN{ $/ = "\0digits"; }>.
+
 Parsing of the #! switches starts wherever "perl" is mentioned in the line.
 The sequences "-*" and "- " are specifically ignored so that you could,
 if you were so inclined, say
 
     #!/bin/sh -- # -*- perl -*- -p
-    eval 'exec /usr/bin/perl $0 -S ${1+"$@"}'
+    eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
         if $running_under_some_shell;
 
 to let Perl see the B<-p> switch.
@@ -224,33 +229,37 @@ runs the script under the control of a debugging or tracing module
 installed as Devel::foo. E.g., B<-d:DProf> executes the script using the
 Devel::DProf profiler.  See L<perldebug>.
 
-=item B<-D>I<number>
+=item B<-D>I<letters>
 
-=item B<-D>I<list>
+=item B<-D>I<number>
 
 sets debugging flags.  To watch how it executes your script, use
-B<-D14>.  (This works only if debugging is compiled into your
-Perl.)  Another nice value is B<-D1024>, which lists your compiled
-syntax tree.  And B<-D512> displays compiled regular expressions. As an
-alternative specify a list of letters instead of numbers (e.g., B<-D14> is
+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. 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
-        2  s  Stack Snapshots
-        4  l  Label Stack Processing
-        8  t  Trace Execution
-       16  o  Operator Node Construction
-       32  c  String/Numeric Conversions
-       64  P  Print Preprocessor Command for -P
-      128  m  Memory Allocation
-      256  f  Format Processing
-      512  r  Regular Expression Parsing
-     1024  x  Syntax Tree Dump
-     2048  u  Tainting Checks
-     4096  L  Memory Leaks (not supported anymore)
-     8192  H  Hash Dump -- usurps values()
-    16384  X  Scratchpad Allocation
-    32768  D  Cleaning Up
+        1  p  Tokenizing and parsing
+        2  s  Stack snapshots
+        4  l  Context (loop) stack processing
+        8  t  Trace execution
+       16  o  Method and overloading resolution
+       32  c  String/numeric conversions
+       64  P  Print preprocessor command for -P
+      128  m  Memory allocation
+      256  f  Format processing
+      512  r  Regular expression parsing and execution
+     1024  x  Syntax tree dump
+     2048  u  Tainting checks
+     4096  L  Memory leaks (needs C<-DLEAKTEST> when compiling Perl)
+     8192  H  Hash dump -- usurps values()
+    16384  X  Scratchpad allocation
+    32768  D  Cleaning up
+
+All these flags require C<-DDEBUGGING> when you compile the Perl
+executable.  This flag is automatically set if you include C<-g>
+option when C<Configure> asks you about optimizer/debugger flags.
 
 =item B<-e> I<commandline>
 
@@ -431,9 +440,27 @@ prints "true" if and only if the script is invoked with a B<-xyz> switch.
 =item B<-S>
 
 makes Perl use the PATH environment variable to search for the
-script (unless the name of the script starts with a slash).  Typically
-this is used to emulate #! startup on machines that don't support #!,
-in the following manner:
+script (unless the name of the script contains directory separators).
+On some platforms, this also makes Perl append suffixes to the
+filename while searching for it.  For example, on Win32 platforms,
+the ".bat" and ".cmd" suffixes are appended if a lookup for the
+original name fails, and if the name does not already end in one
+of those suffixes.  If your Perl was compiled with DEBUGGING turned
+on, using the -Dp switch to Perl shows how the search progresses.
+
+If the file supplied contains directory separators (i.e. it is an
+absolute or relative pathname), and if the file is not found,
+platforms that append file extensions will do so and try to look
+for the file with those extensions added, one by one.
+
+On DOS-like platforms, if the script does not contain directory
+separators, it will first be searched for in the current directory
+before being searched for on the PATH.  On Unix platforms, the
+script will be searched for strictly on the PATH.
+
+Typically this is used to emulate #! startup on platforms that
+don't support #!.  This example works on many platforms that
+have a shell compatible with Bourne shell:
 
     #!/usr/bin/perl
     eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
@@ -482,7 +509,9 @@ Perl.
 allows Perl to do unsafe operations.  Currently the only "unsafe"
 operations are the unlinking of directories while running as superuser,
 and running setuid programs with fatal taint checks turned into
-warnings.
+warnings. Note that the B<-w> switch (or the C<$^W> variable) must
+be used along with this option to actually B<generate> the
+taint-check warnings.
 
 =item B<-v>
 
@@ -575,17 +604,22 @@ The command used to load the debugger code.  The default is:
 =item PERL5SHELL (specific to WIN32 port)
 
 May be set to an alternative shell that perl must use internally for
-executing "backtick" commands or system().  Perl doesn't use COMSPEC
-for this purpose because COMSPEC has a high degree of variability
-among users, leading to portability concerns.  Besides, perl can use
-a shell that may not be fit for interactive use, and setting COMSPEC
-to such a shell may interfere with the proper functioning of other
-programs (which usually look in COMSPEC to find a shell fit for
-interactive use).
+executing "backtick" commands or system().  Default is C<cmd.exe /x/c>
+on WindowsNT and C<command.com /c> on Windows95.  The value is considered
+to be space delimited.  Precede any character that needs to be protected
+(like a space or backslash) with a backslash.
+
+Note that Perl doesn't use COMSPEC for this purpose because
+COMSPEC has a high degree of variability among users, leading to
+portability concerns.  Besides, perl can use a shell that may not be
+fit for interactive use, and setting COMSPEC to such a shell may
+interfere with the proper functioning of other programs (which usually
+look in COMSPEC to find a shell fit for interactive use).
 
 =item PERL_DEBUG_MSTATS
 
-Relevant only if your perl executable was built with B<-DDEBUGGING_MSTATS>,
+Relevant only if perl is compiled with the malloc included with the perl
+distribution (that is, if C<perl -V:d_mymalloc> is 'define'),
 if set, this causes memory statistics to be dumped after execution.  If set
 to an integer greater than one, also causes memory statistics to be dumped
 after compilation.