Never do in a loop, what can be done outside of it.
I agree, and that's why I like, in particular, the for-loop and, less so, map (and let's just pass over the grep) versions that iterate over ranges of 1 .. $#array or 0 .. $#array-1 and so will never enter the loop. (Again, I haven't actually tested all the preceding code in this thread, only stared at it, but it looks ok.)
Wouldn't your version fail for an array with one element?
That depends on the meaning of "fail."
c:\@Work\Perl\monks>perl -wMstrict -MData::Dump -le
"my @ra = (1);
my $i = $#ra;
;;
my @rb;
$rb[ $i ] = $ra[ $i ] + $ra[ --$i ] while $i > 0;
dd \@rb
"
[]
But maybe an operation that iterates pairwise over an array with less than a pair of elements should throw an exception or at least issue a warning. Who can say? Only the Great Specificator above.
Give a man a fish: <%-{-{-{-<
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|