in reply to pass by value vs reference and return by value
OK, you've got the picture by now, you are unlikely to solve your slowness issue by changing the way you pass arguments around. But I can think of a number of things that a C or C++ programmer could do wrong in terms of speed and performance in Perl. Maybe you should post parts of your code so that you might get advice on how to do certain things better.
The one thing you should probably do is to profile your code. There are a number of profiling modules available under the Devel:: name space of the CPAN, such as the simple Devel::Profile module or the much more feature-rich Devel::NYTProf module, etc.