Thanks for posting that! Although the ProFit invocation there is not isolated from your case-specific code, it's still very useful to see how should the system calls be done.
About the wrapper I was thinking about a cleaner, more OO interface. Something like:
my $profitter = Bio::Tools::Run::ProFit->new(
files => \@pdbfiles,
reference => $pdbreference
);
$profitter->fit;
my %rmsds = $profitter->get_rmsds;
But then, since I haven't used the program much, I don't know what else it could/should do. If I ever need to use it again, I'll get back to this thread and, with your permission, steal the portions of your code that successfully interact with ProFit.