X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlrun.pod;h=aea799801ec793c343c983a3daeba4e05d96e29d;hb=618078e967a6042b7f62ba9589c448bf625a3bed;hp=5cbe8ff6d0600d07c6ca4b2c74e79a767691d6ce;hpb=e846cbe53fd65a133ee59961dd2b0d9ae211552a;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlrun.pod b/pod/perlrun.pod index 5cbe8ff..aea7998 100644 --- a/pod/perlrun.pod +++ b/pod/perlrun.pod @@ -10,7 +10,6 @@ B S<[ B<-sTtuUWX> ]> S<[ B<-pna> ] [ B<-F>I ] [ B<-l>[I] ] [ B<-0>[I] ]> S<[ B<-I>I ] [ B<-m>[B<->]I ] [ B<-M>[B<->]I<'module...'> ] [ B<-f> ]> S<[ B<-C [I] >]> - S<[ B<-P> ]> S<[ B<-S> ]> S<[ B<-x>[I] ]> S<[ B<-i>[I] ]> @@ -342,6 +341,11 @@ that enabled the use of Unicode-aware "wide system call" Win32 APIs. This feature was practically unused, however, and the command line switch was therefore "recycled".) +B Since perl 5.10.0, the -C option can no longer be used +on the #! line. It wasn't working there anyway, since the standard streams +are already set up at this point in the execution of the perl interpreter. +You can use binmode() instead to get the desired behaviour. + =item B<-c> X<-c> @@ -395,8 +399,8 @@ B<-D14> is equivalent to B<-Dtls>): 8 t Trace execution 16 o Method and overloading resolution 32 c String/numeric conversions - 64 P Print profiling info, preprocessor command for -P, source file input state - 128 m Memory allocation + 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 @@ -405,7 +409,6 @@ B<-D14> is equivalent to B<-Dtls>): 8192 H Hash dump -- usurps values() 16384 X Scratchpad allocation 32768 D Cleaning up - 65536 S Thread synchronization 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 @@ -588,9 +591,7 @@ proceeds from STDIN to STDOUT as might be expected. X<-I> X<@INC> Directories specified by B<-I> are prepended to the search path for -modules (C<@INC>), and also tells the C preprocessor where to search for -include files. The C preprocessor is invoked with B<-P>; by default it -searches /usr/include and /usr/lib/perl. +modules (C<@INC>). =item B<-l>[I] X<-l> X<$/> X<$\> @@ -659,6 +660,10 @@ Note that the lines are not printed by default. See B<-p> to have lines printed. If a file named by an argument cannot be opened for some reason, Perl warns you about it and moves on to the next file. +Also note that C<< <> >> passes command line arguments to +L, which doesn't necessarily interpret them as file names. +See L for possible security implications. + Here is an efficient way to delete all files that haven't been modified for at least a week: @@ -695,73 +700,6 @@ overrides a B<-n> switch. C and C blocks may be used to capture control before or after the implicit loop, just as in B. -=item B<-P> -X<-P> - -B - -This option causes your program to be run through the C preprocessor before -compilation by Perl. Because both comments and B directives begin -with the # character, you should avoid starting comments with any words -recognized by the C preprocessor such as C<"if">, C<"else">, or C<"define">. - -If you're considering using C<-P>, you might also want to look at the -Filter::cpp module from CPAN. - -The problems of -P include, but are not limited to: - -=over 10 - -=item * - -The C<#!> line is stripped, so any switches there don't apply. - -=item * - -A C<-P> on a C<#!> line doesn't work. - -=item * - -B lines that begin with (whitespace and) a C<#> but -do not look like cpp commands, are stripped, including anything -inside Perl strings, regular expressions, and here-docs . - -=item * - -In some platforms the C preprocessor knows too much: it knows about -the C++ -style until-end-of-line comments starting with C<"//">. -This will cause problems with common Perl constructs like - - s/foo//; - -because after -P this will became illegal code - - s/foo - -The workaround is to use some other quoting separator than C<"/">, -like for example C<"!">: - - s!foo!!; - - - -=item * - -It requires not only a working C preprocessor but also a working -F. If not on UNIX, you are probably out of luck on this. - -=item * - -Script line numbers are not preserved. - -=item * - -The C<-x> does not work with C<-P>. - -=back - =item B<-s> X<-s> @@ -970,6 +908,14 @@ tells Perl that the program is embedded in a larger chunk of unrelated ASCII text, such as in a mail message. Leading garbage will be discarded until the first line that starts with #! and contains the string "perl". Any meaningful switches on that line will be applied. + +All references to line numbers by the program (warnings, errors, ...) +will treat the #! line as the first line. +Thus a warning on the 2nd line of the program (which is on the 100th +line in the file) will be reported as line 2, and not as line 100. +This can be overridden by using the #line directive. +(See L) + If a directory name is specified, Perl will switch to that directory before running the program. The B<-x> switch controls only the disposal of leading garbage. The program must be terminated with @@ -1156,6 +1102,9 @@ compiler's numeric file descriptor routines. There is an experimental native C layer which is expected to be enhanced and should eventually be the default under Win32. +The PERLIO environment variable is completely ignored when perl +is run in taint mode. + =item PERLIO_DEBUG X @@ -1180,6 +1129,9 @@ A list of directories in which to look for Perl library files before looking in the standard library and the current directory. If PERL5LIB is defined, PERLLIB is not used. +The PERLLIB environment variable is completely ignored when perl +is run in taint mode. + =item PERL5DB X @@ -1187,6 +1139,9 @@ The command used to load the debugger code. The default is: BEGIN { require 'perl5db.pl' } +The PERL5DB environment variable only used when perl is started with +a bare B<-d> switch. + =item PERL5DB_THREADED X @@ -1209,6 +1164,11 @@ 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). +Before Perl 5.10.0 and 5.8.8, PERL5SHELL was not taint checked +when running external commands. It is recommended that +you explicitly set (or delete) C<$ENV{PERL5SHELL}> when running +in taint mode under Windows. + =item PERL_ALLOW_NON_IFS_LSP (specific to the Win32 port) X