in reply to How to free memory used by previous program?

Memory issues are usually difficult to track. How do you seriously expect us to help you on such issues if you don't post the real program but only pseudo-code, or don't post, at the very least, a modified/simplified program that exhibits the same behavior as the one you are describing? The code you presented is poorly written in terms of memory management and variable scoping and a number of other aspects (I would simply not hire someone who shows to me such code with no indentation whatsoever), but I don't believe for one second that this code would continue to clutter memory after the program has completed.

Do yourself a favor: remove all these silly undef function calls and use correctly scoped lexical variables, use strict;, use warnings;, indent your code correctly (with whatever indenting style you prefer), give variables meaningful names, learn how to use arrays and hashes, rather than things like

$var1=$1;$var2=$2;$var3=$3;$var4=$4;
Your code will be twice shorter and far more readable.