Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
IO::Null(3)	      User Contributed Perl Documentation	   IO::Null(3)

NAME
       IO::Null	-- class for null filehandles

SYNOPSIS
	 use IO::Null;
	 my $fh	= IO::Null->new;
	 print $fh "I have nothing to say\n";  # does nothing.
	 # or:
	 $fh->print("And I'm saying it.\n");   # ditto.
	 # or:
	 my $old = select($fh);
	 print "and that is poetry / as	I needed it --John Cage"; # nada!
	 select($old);

       Or even:

	 tie(*FOO, IO::Null);
	 print FOO "Lalalalala!\n";  # does nothing.

DESCRIPTION
       This is a class for null	filehandles.

       Calling a constructor of	this class always succeeds, returning a	new
       null filehandle.

       Writing to any object of	this class is always a no-operation, and
       returns true.

       Reading from any	object of this class is	always no-operation, and
       returns empty-string or empty-list, as appropriate.

WHY
       You could say:

	 open(NULL, '>/dev/null') || die "WHAAT?! $!";

       and get a null FH that way.  But	not everyone is	using an OS that has a
       "/dev/null"

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

SEE ALSO
       IO::Handle, perltie, IO::Scalar

CAVEATS
       * This:

	 use IO::Null;
	 $^W = 1;  # turn on warnings
	 tie(*FOO, IO::Null);
	 print FOO "Lalalalala!\n";  # does nothing.
	 untie(*FOO);

       has been	known to produce this odd warning:

	 untie attempted while 3 inner references still	exist.

       and I've	no idea	why.

       * Furthermore, this:

	 use IO::Null;
	 $^W = 1;
	 *FOO =	IO::Null->new;
	 print FOO "Lalalalala!\n";  # does nothing.
	 close(FOO);

       emits these warnings:

	 Filehandle main::FOO never opened.
	 Close on unopened file	<GLOB>.

       ...which	are, in	fact, true; the	FH behind the FOO{IO} was never	opened
       on any real filehandle.	(I'd welcome anyone's (working)	suggestions on
       how to suppress these warnings.)

       You get the same	warnings with:

	 use IO::Null;
	 $^W = 1;
	 my $fh	= IO::Null->new;
	 print $fh "Lalalalala!\n";  # does nothing.
	 close $fh;

       Note that this, however:

	 use IO::Null;
	 $^W = 1;
	 my $fh	= IO::Null->new;
	 $fh->print("Lalalalala!\n");  # does nothing.
	 $fh->close();

       emits no	warnings.

       * I don't know if you can successfully untaint a	null filehandle.

       * This:

	 $null_fh->fileno

       will return a defined and nonzero number, but one you're	not likely to
       want to use for anything.  See the source.

       * These docs are	longer than the	source itself.	Read the source!

COPYRIGHT
       Copyright (c) 2000 Sean M. Burke. All rights reserved.

       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.

AUTHOR
       Sean M. Burke "sburke@cpan.org"

perl v5.24.1			  2004-12-30			   IO::Null(3)

NAME | SYNOPSIS | DESCRIPTION | WHY | IMPLEMENTATION | SEE ALSO | CAVEATS | COPYRIGHT | AUTHOR

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=IO::Null&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help