STDOUT を /dev/null で reopen するという --quiet オプションの実装方法が書いてあった。これはシンプルで使えそう。
「いやな日記 --quiet オプションの実装」
http://namazu.org/~satoru/diary/20040813.html
これをクラスにしておいて、new するという手もある。実際にやってみた。
package QuietMode;
use strict;
use File::Spec;
sub new
{
my $class = shift;
my $self = bless {}, $class;
my $devnull = File::Spec->devnull();
open(STDOUT, ">$devnull");
return $self;
}
package main;
print "This is a pen.\n";
QuietMode->new;
print "This is a pencil.\n";