sub safe_print {
for my $item (@_) {
print defined $item ? $item : '[undef]';
}
}
####
sub safe_print {
local $_;
print map { defined $_ ? $_ : '[UNDEF]' } @_;
}
##
##
use strict;
use warnings;
sub new {
my($class, $args) = @_;
$args = {} unless defined $args;
die "Arguments must be a hash ref\n" unless ref($args) eq 'HASH';
my $self = { %$args };
bless $self, $class;
return $self;
}
sub print {
my $self = shift;
$self->{fh} = *STDOUT unless defined $self->{fh};
my $fh = $self->{fh};
print $fh (map { defined $_ ? $_ : '[UNDEF]' } @_);
}
1;
##
##
open my $fh, ">", "foo" or die "Can't open foo: $!\n";
my $printer = SafePrinter->new({fh => $fh});
$printer->print("so it goes", undef, 'and it went', "\n");
##
##