sub { local *__ANON__='SomeTestPackage2::self_sub'; my( $self, $none, $href, $aref, $non_empty_aref, $custom_aref ) = @_; confess( 'SomeTestPackage2 $custom_aref must be a custom array ref' ) if not eval { scalar @$custom_aref; 1; }; confess( 'SomeTestPackage2::self_sub $non_empty_aref needs a non-empty array reference' ) if not eval { scalar @$non_empty_aref; }; confess( 'SomeTestPackage2::self_sub $aref needs an array reference' ) if not eval { scalar @$aref; 1; }; confess( 'SomeTestPackage2::self_sub $href needs a hash reference' ) if not eval { scalar %$href; 1; }; confess( 'SomeTestPackage2::self_sub needs a SomeTestPackage2 reference' ) if not ref $self or not eval { $self->isa( 'SomeTestPackage2' ); }; package SomeTestPackage2; use warnings; use strict 'refs'; return ref $self, ref $href, ref $aref, scalar @{$non_empty_aref;}; }