use strict;
use warnings;
package Acme::Throw;

# ABSTRACT: For when code makes you want to throw something.

use utf8;

our $MSG;

sub import {
  my ($class, %args) = @_;

  $MSG = $args{-msg} || "WHY WON'T THIS CODE WORK??!?";
  my $orig_handler = $SIG{__DIE__};

  $SIG{__DIE__} = sub {
    binmode(STDERR, ":utf8");
    print STDERR "(╯°□°)╯︵ ┻━┻  $MSG\n";
    $SIG{__DIE__} = $orig_handler;
    die @_;
  };
}

sub _msg { $MSG }

1 && q{ THIS IS MY RAGE FACE }; # truth
__END__

=head1 NAME

Acme::Throw - For when code makes you want to throw something.

=head1 SYNOPSIS

  use Acme::Throw;
  # code that does stuff...
  die "something bad happened"

Alternatively,

  perl -MAcme::Throw /path/to/program.pl

=head1 DESCRIPTION

B<THIS CODE IS CRAP! IT'S SO BAD IT MAKES THE I<COMPUTER> ANGRY!!!>

Do you feel that the error messages in your code don't express your
frustration with enough I<oomph>? Do screens full of stack dumps fill
you with a deep-seated rage?

Have you ever wanted to simply flip a table each time your program
dies with a cryptic, useless exception?

NOW YOU CAN.

=head1 THANKS

I felt I needed to one-up Chris Devers after he posted the bash-equivalent
of this on facebook.

=head1 LICENSE AND COPYRIGHT

GAAAAAAAAARGH!

=cut