X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlrun.pod;h=f89c979c75b1a52da0e2cb67e64af983bb1e1039;hb=4ff31b786b9f6148fc8ea695db081861576d06a2;hp=74fd0adcaa76f9e7ed873f93084447c5abf2bb30;hpb=d2c25739add64fa456c06f60e5029d44b4a14912;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlrun.pod b/pod/perlrun.pod index 74fd0ad..f89c979 100644 --- a/pod/perlrun.pod +++ b/pod/perlrun.pod @@ -13,7 +13,7 @@ B S<[ B<-sTtuUWX> ]> S<[ B<-S> ]> S<[ B<-x>[I] ]> S<[ B<-i>[I] ]> - S<[ B<-eE> I<'command'> ] [ B<--> ] [ I ] [ I ]...> + S<[ [B<-e>|B<-E>] I<'command'> ] [ B<--> ] [ I ] [ I ]...> =head1 DESCRIPTION @@ -77,9 +77,10 @@ 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 perl -wS $0 ${1+"$@"}' - if $running_under_some_shell; + #!/bin/sh + #! -*-perl-*- + eval 'exec perl -x -wS $0 ${1+"$@"}' + if 0; to let Perl see the B<-p> switch. @@ -138,13 +139,6 @@ the sources), you may have to modify the Registry yourself. Note that this means you can no longer tell the difference between an executable Perl program and a Perl library file. -=item Macintosh - -Under "Classic" MacOS, a perl program will have the appropriate Creator and -Type, so that double-clicking them will invoke the MacPerl application. -Under Mac OS X, clickable apps can be made from any C<#!> script using Wil -Sanchez' DropScript utility: http://www.wsanchez.net/software/ . - =item VMS Put @@ -180,10 +174,6 @@ For example: # MS-DOS, etc. perl -e "print \"Hello world\n\"" - # Macintosh - print "Hello world\n" - (then Run "Myscript" or Shift-Command-R) - # VMS perl -e "print ""Hello world\n""" @@ -197,11 +187,6 @@ B in Windows NT slipped a lot of standard Unix functionality in when nobody was looking, but just try to find documentation for its quoting rules. -Under the Macintosh, it depends which environment you are using. The MacPerl -shell, or MPW, is much like Unix shells in its support for several -quoting variants, except that it makes free use of the Macintosh's non-ASCII -characters as control characters. - There is no general solution to all of this. It's just a mess. =head2 Location of Perl @@ -341,6 +326,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.1, if the -C option is used on the #! line, it +must be specified on the command line as well, since the standard streams +are already set up at this point in the execution of the perl interpreter. +You can also use binmode() to set the encoding of an I/O stream. + =item B<-c> X<-c> @@ -395,7 +385,7 @@ B<-D14> is equivalent to B<-Dtls>): 16 o Method and overloading resolution 32 c String/numeric conversions 64 P Print profiling info, source file input state - 128 m Memory allocation + 128 m Memory and SV allocation 256 f Format processing 512 r Regular expression parsing and execution 1024 x Syntax tree dump @@ -411,6 +401,8 @@ B<-D14> is equivalent to B<-Dtls>): 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 All these flags require B<-DDEBUGGING> when you compile the Perl executable (but see L, L which may change this). @@ -655,6 +647,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: @@ -899,6 +895,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 @@ -956,7 +960,7 @@ is used. The program should instead say: X Command-line options (switches). Switches in this variable are taken -as if they were on every Perl command line. Only the B<-[CDIMUdmtw]> +as if they were on every Perl command line. Only the B<-[CDIMUdmtwW]> switches are allowed. When running taint checks (because the program was running setuid or setgid, or the B<-T> switch was used), this variable is ignored. If PERL5OPT begins with B<-T>, tainting will be @@ -1085,6 +1089,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 @@ -1109,6 +1116,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 @@ -1116,6 +1126,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 @@ -1138,6 +1151,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