Depends what you mean. An example of the kind of 'command' you wish to test would help.
I am assuming you are running a child process using backticks or system. The problem with the return code $? with these is that they might invoke a shell, and it will be the return code from the shell you might pickup, not that of the shell command. Is it this that bothers you?
If so, your best bet is to execute the external program without invoking a shell. Avoid shell meta-characters like redirection, pipes, globbing, and so on. It is not that difficult to do all that from Perl before invoking the external program.
Alternatively execute the program using fork
(unless you are on Windows).