The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Object::BlankStr;

use 5.010001;

our $VERSION = '0.05'; # VERSION

use overload q{""} => sub { "" };

sub new { bless(\"$_[0]", $_[0]) }

1;
# ABSTRACT: Object which stringifies to empty string ("")

__END__

=pod

=head1 NAME

Object::BlankStr - Object which stringifies to empty string ("")

=head1 VERSION

version 0.05

=head1 SYNOPSIS

 use Object::BlankStr;

 die Object::BlankStr->new; # dies without printing anything

 # checking exception the right way
 eval { die rand() > 0.5 ? Object::BlankStr->new : "blurg" };
 my $eval_err = $@;
 if ($eval_err || ref($eval_err)) {
    ...
 }

 # checking exception the WRONG way, object is stringified to "" and becomes
 # false
 eval { die rand() > 0.5 ? Object::BlankStr->new : "blurg" };
 if ($@) {
    ...
 }

=head1 DESCRIPTION

Object::BlankStr is just an empty object which stringifies to "" (empty string).
Since it is an object, it has a boolean true value (but be careful with
stringification, see SYNOPSIS).

So far the only case I've found this to be useful is for die()-ing without
printing anything. If you just use 'die;' or 'die "";' Perl will print the
default "Died at ..." message. But if you say 'die Object::BlankStr->new;' Perl
will die without printing anything.

=for Pod::Coverage ^(new)$

=head1 SEE ALSO

L<Object::NulStr>

L<Object::SpaceBackStr>

=head1 AUTHOR

Steven Haryanto <stevenharyanto@gmail.com>

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2013 by Steven Haryanto.

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

=cut