in reply to Oh where has my memory gone?
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); } }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Oh where has my memory gone?
by perrin (Chancellor) on Jun 09, 2008 at 19:50 UTC | |
|
Re^2: Oh where has my memory gone?
by Anonymous Monk on Jun 09, 2008 at 19:26 UTC | |
by bart (Canon) on Jun 09, 2008 at 19:43 UTC | |
by massa (Hermit) on Jun 09, 2008 at 19:43 UTC |