http://www.perlmonks.org?node_id=108482

mikeB has asked for the wisdom of the Perl Monks concerning the following question:

The sub below does not seem to be releasing the memory allocated to the $data and @pixels variables. I'm willing to accept that the first may be an issue with the Tk::Photo module. Why wouldn't the memory from @pixels be released?

The sub is called repeatedly, passing a Tk::Image. It works as expected other than the memory issue. The memory allocation is being tracked via WinNT's Task Manager and the debugging print statements.

sub averageColor { my $image = shift; my @average = (0,0,0); my $x; my $y; my @rgb; print "load data..."; my $data = $image->data(-from => (0,0,$image->width()-1, $image->h +eight()-1)); print "split..."; my @pixels = split(/ /,$data); print "avg..."; foreach (@pixels) { $average[0] += substr($_,1,2); $average[1] += substr($_,3,2); $average[2] += substr($_,5,2); } print "div..."; for $x (0 .. 2) { $average[$x] = int($average[$x] / ($image->width * $image->hei +ght)); } print "done\n"; @average; }