note
pc88mxer
I often will use <c>for</c> instead of <c>map</c> for generating lists, especially when I am in the process of developing the code. Once I've got things figured out I might go back and re-code the loop as a <c>map</c>. <p>Using <c>for</c> has the following advantages:
<ul>
<li>you have more control and options over loop execution (<c>last</c>, <c>next</c>, etc.)
<li>you can use your own more descriptive named lexical instead of <c>$_</c>
<li>it's more readable (especially for non-perl experts)
</ul>
If the list-generation logic is just a simple transformation, I'll just opt for a <c>map</c> implementation. Once, however, the logic becomes more complex, an explicit <c>for</c> loop begins to look more attractive. For instance, which of the following do you find easier to understand?
<c>
my @result = map { f($_) ? g($_) : () } @list;
# or:
my @result;
for (@list) {
push(@result, g($_)) if (f($_));
}
</c>
702071
702071