This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Tweak the section name to agree with the change #21295.
[perl5.git] / lib / PerlIO.pm
index 678a79d..c7b9f13 100644 (file)
@@ -115,11 +115,11 @@ to a such a stream.
 =item raw
 
 The C<:raw> layer is I<defined> as being identical to calling
-C<binmode($fh)> - the stream is made suitable for passing binary
-data i.e. each byte is passed as-is. The stream will still be
-buffered. Unlike earlier versions of perl C<:raw> is I<not> just the
-inverse of C<:crlf> - other layers which would affect the binary nature of
-the stream are also removed or disabled.
+C<binmode($fh)> - the stream is made suitable for passing binary data
+i.e. each byte is passed as-is. The stream will still be
+buffered. Unlike in the earlier versions of Perl C<:raw> is I<not>
+just the inverse of C<:crlf> - other layers which would affect the
+binary nature of the stream are also removed or disabled.
 
 The implementation of C<:raw> is as a pseudo-layer which when "pushed"
 pops itself and then any layers which do not declare themselves as suitable
@@ -204,7 +204,7 @@ translation for text files then the default layers are :
 level layer.)
 
 Otherwise if C<Configure> found out how to do "fast" IO using system's
-stdio, then the default layers are :
+stdio, then the default layers are:
 
   unix stdio
 
@@ -224,32 +224,31 @@ This can be used to see the effect of/bugs in the various layers e.g.
   PERLIO=stdio  ./perl harness
   PERLIO=perlio ./perl harness
 
-=head2 Querying the layers of filehandle
+For the various value of PERLIO see L<perlrun/PERLIO>.
+
+=head2 Querying the layers of filehandles
 
 The following returns the B<names> of the PerlIO layers on a filehandle.
 
    my @layers = PerlIO::get_layers($fh); # Or FH, *FH, "FH".
 
 The layers are returned in the order an open() or binmode() call would
-use them.  Note that the stack begins (normally) from C<stdio> or from
-C<perlio>.  Under C<stdio> the platform specific low-level I/O (like
-C<unix>) is not part of the stack, but under C<perlio> (and the
-experimental C<mmap>) it is.
-
-In platforms of DOS progeny (Win32 being the most prominent) the
-lowest level layers are C<unix crlf>, meaning that Perl first uses the
-UNIX-style low-level fd layer, and then on top of that a layer that
-handles the CRLF translation.
+use them.  Note that the "default stack" depends on the operating
+system and on the Perl version, and both the compile-time and
+runtime configurations of Perl.
 
 The following table summarizes the default layers on UNIX-like and
 DOS-like platforms and depending on the setting of the C<$ENV{PERLIO}>:
 
- PERLIO   UNIX-like       DOS-like
+ PERLIO     UNIX-like                   DOS-like
  
- none     stdio           unix crlf
- stdio    stdio           stdio
- perlio   unix perlio     unix perlio
- mmap     unix mmap       unix mmap
+ unset / "" unix perlio / stdio [1]     unix crlf
+ stdio      unix perlio / stdio [1]     stdio
+ perlio     unix perlio                 unix perlio
+ mmap       unix mmap                   unix mmap
+
+ # [1] "stdio" if Configure found out how to do "fast stdio" (depends
+ # on the stdio implementation) and in Perl 5.8, otherwise "unix perlio"
 
 By default the layers from the input side of the filehandle is
 returned, to get the output side use the optional C<output> argument: