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.