Without seeing your error, why dont you do some testing with absolute paths. like: system("source /home/perlmonkey/.profile") .
in reply to the command - system ( "source ./profile") not working
For debugging purposes, I would suggest using the backtick approach to see any stdout: print `source /home/perlmonkey/.profile`
Do note, your sourced profile will exist in the subshell you called it in. So to test it further you will have to do something like print `source .profile;echo $PATH` which assumes that there exists a path var in the shell.
Hopefully your in some type of linux enviroment, otherwise the commands you were calling would be somewhat faulty.
UPDATE:Take a look at the answer in the following node 616002 as it addresses the problem of sourcing a license which could be quite similar to your problem.