use UNIVERSAL 'can'; my $sub = can "A::B::$ModName", "Sub"; if( $sub ){ $sub->($X); } my $res ; if( eval { $res= "A::B::$ModName::Sub"->($X); 1 } ){ return $res; }