As has been said extensively already it is difficult to answer on the basis of the supplied code sample. use <c> tags to allow us read your code
I have made an attempt at parsing code out of it and added a few comments could you let us know what happens when you try to run the script?
...
my $dir ='/home/'; # perhaps $ENV{HOME} ?
...
next unless ($file =~m/\. gi$/); # really you're looking for a file e
+nding ". gi" perhaps $file =~m/\.gi$/
...
%links = elink_batch_to($db1, %params); # where does $db1 come from
..
} # missing closing brace