X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlrun.pod;h=81d47495b755946125c2900cd0fd27c8436dd43a;hb=363c40c40eaf5d0cfd92f460a3f838c41f9756ad;hp=0a02df15fed8fa3b01c4aeee2b7c79b653f729ca;hpb=504f80c1f3625809f472c1ce21089fdae860d9fd;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlrun.pod b/pod/perlrun.pod index 0a02df1..81d4749 100644 --- a/pod/perlrun.pod +++ b/pod/perlrun.pod @@ -127,7 +127,7 @@ as the first line in C<*.cmd> file (B<-S> due to a bug in cmd.exe's =item MS-DOS Create a batch file to run your program, and codify it in -C (see the F file in the source +C (see the F file in the source distribution for more information). =item Win95/NT @@ -894,11 +894,13 @@ used. =item PERL5LIB -A colon-separated list of directories in which to look for Perl library +A list of directories in which to look for Perl library files before looking in the standard library and the current directory. Any architecture-specific directories under the specified locations are automatically included if they exist. If PERL5LIB is not -defined, PERLLIB is used. +defined, PERLLIB is used. Directories are separated (like in PATH) by +a colon on unixish platforms and by a semicolon on Windows (the proper +path separator being given by the command C). When running taint checks (either because the program was running setuid or setgid, or the B<-T> switch was used), neither variable is used. @@ -945,9 +947,23 @@ You perhaps were thinking of C<:crlf:bytes> or C<:perlio:bytes>. =item :crlf -A layer that implements DOS/Windows like CRLF line endings. -On read converts pairs of CR,LF to a single "\n" newline character. -On write converts each "\n" to a CR,LF pair. +A layer that implements DOS/Windows like CRLF line endings. On read +converts pairs of CR,LF to a single "\n" newline character. On write +converts each "\n" to a CR,LF pair. Note that this layer likes to be +one of its kind: it silently ignores attempts to be pushed into the +layer stack more than once. + +(Gory details follow) To be more exact what happens is this: after +pushing itself to the stack, the C<:crlf> layer checks all the layers +below itself to find the first layer that is capable of being a CRLF +layer but is not yet enabled to be a CRLF layer. If it finds such a +layer, it enables the CRLFness of that other deeper layer, and then +pops itself off the stack. If not, fine, use the one we just pushed. + +The end result is that a C<:crlf> means "please enable the first CRLF +layer you can find, and if you can't find one, here would be a good +spot to place a new one." + Based on the C<:perlio> layer. =item :mmap @@ -1062,7 +1078,7 @@ and Win32 approximate equivalent: =item PERLLIB -A colon-separated list of directories in which to look for Perl library +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. @@ -1108,23 +1124,41 @@ PERL_ENCODING environment variable is consulted for an encoding name. =item PERL_HASH_SEED -(Since Perl 5.8.1.) - -Used to randomise Perl's internal hash function. To emulate the -pre-5.8.1 behaviour, set to an integer (zero means exactly the same -order as 5.8.0). "Pre-5.8.1" means, among other things, that hash -keys will be ordered the same between different runs of Perl. +(Since Perl 5.8.1.) Used to randomise Perl's internal hash function. +To emulate the pre-5.8.1 behaviour, set to an integer (zero means +exactly the same order as 5.8.0). "Pre-5.8.1" means, among other +things, that hash keys will be ordered the same between different runs +of Perl. The default behaviour is to randomise unless the PERL_HASH_SEED is set. -If Perl has been compiled with the -DUSE_HASH_SEED_EXPLICIT the default +If Perl has been compiled with C<-DUSE_HASH_SEED_EXPLICIT>, the default behaviour is B to randomise unless the PERL_HASH_SEED is set. If PERL_HASH_SEED is unset or set to a non-numeric string, Perl uses the pseudorandom seed supplied by the operating system and libraries. -If unset, each different run of Perl will have different ordering of -the outputs of keys(), values, and each(). +This means that each different run of Perl will have a different +ordering of the results of keys(), values(), and each(). + +B. Hashes are +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 and +L for more information. + +=item PERL_HASH_SEED_DEBUG + +(Since Perl 5.8.1.) Set to one to display (to STDERR) the value of +the hash seed at the beginning of execution. This, combined with +L is intended to aid in debugging nondeterministic +behavior caused by hash randomization. -See L for more information. +B: by knowing it one +can craft a denial-of-service attack against Perl code, even remotely, +see L for more information. +B to people who don't need to know it. +See also hash_seed() of L. =item PERL_ROOT (specific to the VMS port) @@ -1138,7 +1172,8 @@ L and in F in the Perl source distribution. In Perls 5.8.1 and later. If set to C the pre-Perl-5.8.0 signals behaviour (immediate but unsafe) is restored. If set to -C the safe (or deferred) signals are used. See L. +C the safe (or deferred) signals are used. +See L. =item PERL_UNICODE