### Re^2: Editing Listed Data

by jtucker (Initiate)
 on Mar 25, 2013 at 00:47 UTC ( #1025207=note: print w/replies, xml ) Need Help??

in reply to Re: Editing Listed Data

Yes, I am aware of the logic of my question. What I an hung on is the third bullet. How Do I iterate through the array, yet compare the next item against the former?

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

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
}

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://1025207]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (7)
As of 2018-09-26 13:15 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
Eventually, "covfefe" will come to mean:

Results (205 votes). Check out past polls.

Notices?