in reply to Memory leak in map function?

Without knowing your $module instance's methods or the size and nature of @objects, it's hard to say why your memory runs away. Where does $module come from?

map builds a list of its results, which is why it is inadvisable to use it in void context as you have. Undefining $results ought to be unnecessary in the first case, and may be damaging in the second. map's block should end with the expression you want to have in the list it produces.

The for loop is probably what you want to do here. It is usually slower to call map because you need to build a list of all the results.

What happens if you say this?,

my @results = map { $module->target($_); $module->process(); } @objects;

After Compline,
Zaxo

Replies are listed 'Best First'.
Re: Memory leak in map function?
by Abigail-II (Bishop) on Aug 20, 2003 at 08:53 UTC
    map builds a list of its results, which is why it is inadvisable to use it in void context as you have.

    The fact that map does so in void context, and hence isn't paying attention to context, is a bug in the implementation of map. This has been known for eons, but noone ever cared enough to provide a patch.

    Abigail