in reply to Getting the next array element while still keeping the current one
Interesting problem. Here is something...
#!/usr/local/bin/perl use warnings; use strict; init( [ qw/2 3 5 polka dot bikini/ ] ); my $index = 3; # 'polka' my ($current , $next , $prev ) = get($index); printf "%s\n%s\n%s\n" , $current , $next , $prev; { my ($old , $cursor , $size , @array); sub init { my $a_ref = shift; @array = @{$a_ref}; $size = scalar @array or die "empty array\n"; $cursor = 0; } sub get { $cursor = shift; $old = $cursor++; return ( current() , next_() , prev() ); } sub current { return $array[$old]; } sub prev { return ($old -1) >= 0 ? $array[ $old -1 ] : undef; } sub next_ { return ($old +1) < $size ? $array[ $old +1 ] : undef; } }
From the looks of it, it seems something like it would already have been in existence on CPAN. Anyway ...
Mind that one can easily ignore some/all of the return values; above is just one way of the using the-code-that-wants-to-be-a-module. Needless to say that current(), next_(), and prev() can be called directly as desired.
UPDATE: Return of references to prev() and next_() is changed to the return of values they would have actually returned.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: Getting the next array element while still keeping the current one
by parv (Parson) on May 02, 2004 at 02:45 UTC |