|
sub key {
my $me = shift ;
while ( defined ( my $r = $me ->_nextrow()) ){
next if $r ->[0] eq $me ->{key};
$me ->_putback( $r );
$me ->{key} = $r ->[0];
return $r ->[0];
}
return ;
}
sub next {
my ( $data , $end ) = _next( @_ );
if ( wantarray ){
return ( $data , $end );
} else {
return $data ;
}
}
sub _next {
my $me = shift ;
my $r = $me ->_nextrow();
return ( undef , 1) unless $r ;
return $r ->[1] if $me ->{key} eq $r ->[0];
$me ->_putback( $r );
return ( undef , 1);
}
sub foreach {
my $me = shift ;
my $sub = shift ;
while (1){
my ( $r , $end ) = $me -> next ();
last if $end ;
$sub ->( $r );
}
}
sub _putback {
my $me = shift ;
my $r = shift ;
$me ->{buf} = $r ;
}
1;
|