#!/usr/bin/perl use strict; use warnings; use Error qw(:try); use Test::More tests => 8; my $dollar_at; my $arg_0; try { throw Error::Simple( "message" ); } catch Error::Simple with { $arg_0 = shift; $dollar_at = $@; }; ok( defined $arg_0, 'defined( $_[0] ) after throw/catch' ); ok( defined $dollar_at, 'defined( $@ ) after throw/catch' ); ok( ref $arg_0 && $arg_0->isa( "Error::Simple" ), '$_[0]->isa( "Error::Simple" ) after throw/catch' ); ok( ref $dollar_at && $dollar_at->isa( "Error::Simple" ), '$@->isa( "Error::Simple" ) after throw/catch' ); try { throw Error::Simple( "message" ); } otherwise { $arg_0 = shift; $dollar_at = $@; }; ok( defined $arg_0, 'defined( $_[0] ) after throw/otherwise' ); ok( defined $dollar_at, 'defined( $@ ) after throw/otherwise' ); ok( ref $arg_0 && $arg_0->isa( "Error::Simple" ), '$_[0]->isa( "Error::Simple" ) after throw/otherwise' ); ok( ref $dollar_at && $dollar_at->isa( "Error::Simple" ), '$@->isa( "Error::Simple" ) after throw/otherwise' );