in reply to interface perl to C++ code with SWIG, re: void pointers?

TypeError in method 'version', argument 1 of type 'void *' at ./test_swig.pl line 8

You've specified in your C++ code that the version method takes a single argument, but when you call that method from perl you provide no argument at all.
I don't really know what version() is supposed to do, but if the correct way to call it from perl is to provide no arguments, then the C++ code should also declare version() as taking no arguments:
int version();
or, if C++ complains about that, try:
int version(void);
UPDATE: Duh ... my stupidity ... $control->version() does, of course, pass one argument to the version function.

Sorry - I have some experience with C and perl, but little experience with C++, and virtually no experience with SWIG.
A more common approach to having perl access C++ code is via the perl module Inline::CPP (instead of SWIG).

Cheers,
Rob