I'm even using undef when I'm done with variables
Don't bother using undef to free memory, just let your variables go out of scope and let Perl's garbage collector work for you.
For instance, you should declare my @list and my @new_list inside the manager block.
Followup: better yet, don't use the arrays. Just iterate over the directory handle.
use strict; use warnings; my $thr; # ... sub manager() { local $| = 1; while (print '.') { opendir(my $dir_handle, './acc'); FILE: while (my $file = readdir($dir_handle) ) { # or use /.dat/ if that's what you meant next FILE if $file !~ /[.]dat$/; open(my $reader, '<', "./acc/$file"); my @items = <$reader>; close($reader); $thr = threads->new(\&initiator, @items); unlink("./acc/$file"); } close($dir_handle); sleep(2); } }
In reply to Re: Oh where has my memory gone?
by Narveson
in thread Oh where has my memory gone?
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |