Tying Filehandles

Tied filehandles call a user-defined object whenever you read from or write to a filehandle, as shown in Table 9.4. Note that the tie statement takes a typeglob, not a bareword.

Table 9-4. tie and Filehandles

When you say:

Perl translates it to:

tie *FH, 'Foo', 'a','b'
$obj = Foo-->TIEHANDLE('a','b');
<FH>
$obj-->READLINE();
read (FH, $buf, $len, $offset)
sysread (FH, $buf, $len, $offset)
$obj->READ($buf, $len, $offset)
getc(FH)
$obj->GETC()
print FH "I do"; #No comma after FH
$obj-->PRINT("I do");
untie *FH;
$obj-->DESTROY();

This method can be used to simulate a file or process with a test driver or to monitor access to a filehandle for silently logging a conversation (like the tee(1) command). Tk, which we will study in detail in Chapter 14, supports ties to let you redirect I/O to its text widget. We will look at a small example of this feature when we study that widget.

Get Advanced Perl Programming 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.