double cos( double x ) /* No need to write the trivial XS wrapper, just the declaration */ #### package Math::MyWrapper; use Math::MyWrapper::XS(); use Exporter 'import'; our @EXPORT_OK = qw< cos ... >; sub new { require Math::MyWrapper::Class; return "Math::MyWrapper::Class"; } sub cos { my( $x ) = @_; return Math::MyWrapper::XS::cos( $x ); } ... #### package Math::MyWrapper::Class; use Math::MyWrapper(); for my $sub ( @Math::MyWrapper::EXPORT_OK ) { eval "sub $sub { Math::MyWrapper::$sub( \@_[1..\$#_] ) }; 1" or die "Error building $sub method: $@\n"; } 1