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 L =head1 AUTHOR Steven Haryanto =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