Thanks for all the help everyone! Here are the revised attributes:
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-e
+mpty array reference' ) if not eval { scalar @$non_empty_aref; };
confess( 'SomeTestPackage2::self_sub $aref needs an array referenc
+e' ) 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 refe
+rence' ) 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;}
+;
}
Now, back to the job of actually developing the meta programming interface. Thanks again.