Perl 5.8 and PerlIO
Perl 5.8 does I/O via PerlIO instead of through your system’s I/O
(STDIO). By implementing open( )
with PerlIO, the default behavior of open
is changed to support a
three-argument format. For example:
open($fh, '>:utf-8', $filename) or die("..."); # Open $filename and support utf-8
In this example, the filehandle is marked with utf-8
(or utf8
for EBCDIC users) to accept Perl’s
internal Unicode encoding.
The PerlIO layers are:
- unix
Low-level read/write
- stdio
Standard I/O
- perlio
Portable implementation of buffering
- crlf
Win32
Also in Perl 5.8, you are no longer required to name a
filehandle in open( )
because
Perl will handle the filehandles internally:
open($fh, ...) or ...
You can also use anonymous temporary files with the new form
of open( )
:
open($fh, ">", undef) or ...
Pipes can also be used with a multiple-argument form of
open
. The following code is
roughly equivalent to the Unix command 'ls
-al'
:
open($fh, "-|", 'ls -al', '/users') or ...
Get Perl in a Nutshell, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.