sub exec_internal_sub { my ($sub_ref, @sub_args) = @_; try { $sub_ref->(@sub_args); } catch { my $E = shift; throw Error::Simple($E); }; } sub interface_sub { exec_internal_sub(\&internal_sub1, $arg1, $arg2); exec_internal_sub(\&internal_sub2, $arg1, $arg2, $arg3); }