Please use File::Temp to find a place to write temporary files:
http://perldoc.perl.org/File/Temp.html
Instead of this code which hardcodes /tmp/:
sub do_parallel {
my ($case, @args) = @_; # @args is for case 'check' ...
my (%tmps, $job, $p, $file);
# spawn the child processes for the task:
for ($job=0; $job < $njobs; $job++) {
my $tmpfile0 = "/tmp/abicheck.in.$$.$job";
my $tmpfile1 = "/tmp/abicheck.out.$$.$job";
push(@tmpfiles, $tmpfile0, $tmpfile1);
if ($case eq 'check') {
# load the files to be processed by this job:
open(TMP, ">$tmpfile0") || (killpids(), exit 1);