### Re^3: Editing Listed Data (index, stack)

 on Mar 25, 2013 at 01:03 UTC ( #1025211=note: print w/replies, xml ) Need Help??

in reply to Re^2: Editing Listed Data

How Do I iterate through the array, yet compare the next item against the former?

You use an index, or you keep a stack

The index approach, its missing boundary checking ( ; beware of off-by-one errors

```my @stuff = 0 .. 9;
for my \$ix ( 0 .. \$#stuff ){
my \$item = \$stuff[\$ix];
my \$prev = \$stuff[\$ix-1];
my \$next = \$stuff[\$ix+1];
}

The stack approach

```my @stuff = 0 .. 9;
my \$lastitem = "";
for my \$item ( @stuff ){
my \$next = \$item;
if( \$item eq \$lastitem ){
print "they measure up\n";
}
\$lastitem = \$item;
}

Oh, but you \$lastitem is not an array, right

```my @stuff = 0 .. 9;
my @lastitem ;
for my \$item ( @stuff ){
my \$next = \$item;
if( @lastitem and  \$item eq \$lastitem[-1] ){
print "they measure up\n";
}
push @lastitem, \$item;
shift @lastitem while 3 == @lastitem; ### keep at most 3 last items
}

Replies are listed 'Best First'.
Re^4: Editing Listed Data (index, stack)
by Anonymous Monk on Mar 25, 2013 at 01:06 UTC

And I didn't preview enough :) or test the logic   shift @lastitem while  @lastitem > 3; ### keep at most 3 last items

Thanks! That was just the sort of stimulation I needed.

Create A New User
Node Status?
node history
Node Type: note [id://1025211]
help
Chatterbox?
 [Discipulus]: damn I missed a possible employer for seconds..

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (5)
As of 2018-04-20 19:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
My travels bear the most uncanny semblance to ...

Results (78 votes). Check out past polls.

Notices?