I currently call MATLAB in background mode...
You'll probably have to consult the MATLAB documentation on how to run the program in a way that it doesn't return before having finished. Maybe running it in the background isn't the way to go... Can you run it in batch mode (i.e. without the GUI), but in the foreground?
Or, if that's not possible, you could maybe let the MATLAB job create a certain file when done (acting as a "finished" flag), whose existence you could then poll from your Perl script.