sub method { my @args = @_; $args[0] = tied(%{$args[0]}); my $result = C++CODE::method(@args); return $result; } #### use lib () use (C++ package) #### my $dsgn = new (c++_object) $dsgn->(method) #### MAIN my C++object C++object = pckA::routine pckB::routine(C++object) PACKAGEA our C++object routine new C++object return C++object PACKAGEB routine my $C++object = @_ $C++object->method()