The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package pujHa'ghach::Dotlh;

# Translator notes: Dotlh = status

# Ideally this should be le'wI' - Thing that is exceptional. ;)
# Unfortunately that results in a file called .pm, which may cause
# problems on some filesystems.

use strict;
use warnings;

use base qw(autodie::exception);

sub stringify {
    my ($this) = @_;

    my $error = $this->SUPER::stringify;

    return "QaghHommeyHeylIjmo':\n" .   # Due to your apparent minor errors
           "$error\n" .
           "lujqu'";                    # Epic fail


}

1;

__END__

# The following was a really neat idea, but currently autodie
# always pushes values in $! to format them, which loses the
# Klingon translation.

use Errno qw(:POSIX);
use Scalar::Util qw(dualvar);

my %translation_for = (
    EPERM()  => q{Dachaw'be'},        # You do not have permission
    ENOENT() => q{De' vItu'laHbe'},   # I cannot find this information.
);

sub errno {
    my ($this) = @_;

    my $errno = int $this->SUPER::errno;

    warn "In tlhIngan errno - $errno\n";

    if ( my $tlhIngan = $translation_for{ $errno } ) {
        return dualvar( $errno, $tlhIngan );
    }

    return $!;

}

1;