1IO::Null(3)           User Contributed Perl Documentation          IO::Null(3)
2
3
4

NAME

6       IO::Null -- class for null filehandles
7

SYNOPSIS

9         use IO::Null;
10         my $fh = IO::Null->new;
11         print $fh "I have nothing to say\n";  # does nothing.
12         # or:
13         $fh->print("And I'm saying it.\n");   # ditto.
14         # or:
15         my $old = select($fh);
16         print "and that is poetry / as I needed it --John Cage"; # nada!
17         select($old);
18
19       Or even:
20
21         tie(*FOO, IO::Null);
22         print FOO "Lalalalala!\n";  # does nothing.
23

DESCRIPTION

25       This is a class for null filehandles.
26
27       Calling a constructor of this class always succeeds, returning a new
28       null filehandle.
29
30       Writing to any object of this class is always a no-operation, and
31       returns true.
32
33       Reading from any object of this class is always no-operation, and
34       returns empty-string or empty-list, as appropriate.
35

WHY

37       You could say:
38
39         open(NULL, '>/dev/null') || die "WHAAT?! $!";
40
41       and get a null FH that way.  But not everyone is using an OS that has a
42       "/dev/null"
43

IMPLEMENTATION

45       This is a subclass of IO::Handle.  Applicable methods with subs that do
46       nothing, and return an appropriate value.
47

SEE ALSO

49       IO::Handle, perltie, IO::Scalar
50

CAVEATS

52       * This:
53
54         use IO::Null;
55         $^W = 1;  # turn on warnings
56         tie(*FOO, IO::Null);
57         print FOO "Lalalalala!\n";  # does nothing.
58         untie(*FOO);
59
60       has been known to produce this odd warning:
61
62         untie attempted while 3 inner references still exist.
63
64       and I've no idea why.
65
66       * Furthermore, this:
67
68         use IO::Null;
69         $^W = 1;
70         *FOO = IO::Null->new;
71         print FOO "Lalalalala!\n";  # does nothing.
72         close(FOO);
73
74       emits these warnings:
75
76         Filehandle main::FOO never opened.
77         Close on unopened file <GLOB>.
78
79       ...which are, in fact, true; the FH behind the FOO{IO} was never opened
80       on any real filehandle.  (I'd welcome anyone's (working) suggestions on
81       how to suppress these warnings.)
82
83       You get the same warnings with:
84
85         use IO::Null;
86         $^W = 1;
87         my $fh = IO::Null->new;
88         print $fh "Lalalalala!\n";  # does nothing.
89         close $fh;
90
91       Note that this, however:
92
93         use IO::Null;
94         $^W = 1;
95         my $fh = IO::Null->new;
96         $fh->print("Lalalalala!\n");  # does nothing.
97         $fh->close();
98
99       emits no warnings.
100
101       * I don't know if you can successfully untaint a null filehandle.
102
103       * This:
104
105         $null_fh->fileno
106
107       will return a defined and nonzero number, but one you're not likely to
108       want to use for anything.  See the source.
109
110       * These docs are longer than the source itself.  Read the source!
111
113       Copyright (c) 2000 Sean M. Burke. All rights reserved.
114
115       This library is free software; you can redistribute it and/or modify it
116       under the same terms as Perl itself.
117

AUTHOR

119       Sean M. Burke "sburke@cpan.org"
120
121
122
123perl v5.34.0                      2021-07-22                       IO::Null(3)
Impressum