in reply to Error Correction

In addition to everything else, you should replace (for example)

open(CONFLIST1, ">>", "conf_list1.tmp")  || die("$!\n");

with

open(CONFLIST1, ">>", "conf_list1.tmp")  || die("Opening conf_list1.tmp $!\n");

That is, include the path of the file you're trying to open. In the above case, it's trivial (or unnecessary), but if you use an array of paths, or a subroutine, you'll definitely want to know which file you had problems with. It also eliminates the problem (when constructing pathnames) of thinking you were using one path, when you actually were using something else entirely.