home *** CD-ROM | disk | FTP | other *** search
/ Netrunner 2004 October / NETRUNNER0410.ISO / regular / ActivePerl-5.8.4.810-MSWin32-x86.msi / _2608e965327c8b3a765c38a267c18138 < prev    next >
Text File  |  2004-06-01  |  1KB  |  67 lines

  1. package Test::Harness::Iterator;
  2.  
  3. use strict;
  4. use vars qw($VERSION);
  5. $VERSION = 0.02;
  6.  
  7. =head1 NAME
  8.  
  9. Test::Harness::Iterator - Internal Test::Harness Iterator
  10.  
  11. =head1 SYNOPSIS
  12.  
  13.   use Test::Harness::Iterator;
  14.   my $it = Test::Harness::Iterator->new(\*TEST);
  15.   my $it = Test::Harness::Iterator->new(\@array);
  16.  
  17.   my $line = $it->next;
  18.  
  19. =head1 DESCRIPTION
  20.  
  21. B<FOR INTERNAL USE ONLY!>
  22.  
  23. This is a simple iterator wrapper for arrays and filehandles.
  24.  
  25. =head2 new()
  26.  
  27. Create an iterator.
  28.  
  29. =head2 next()
  30.  
  31. Iterate through it, of course.
  32.  
  33. =cut
  34.  
  35. sub new {
  36.     my($proto, $thing) = @_;
  37.  
  38.     my $self = {};
  39.     if( ref $thing eq 'GLOB' ) {
  40.         bless $self, 'Test::Harness::Iterator::FH';
  41.         $self->{fh} = $thing;
  42.     }
  43.     elsif( ref $thing eq 'ARRAY' ) {
  44.         bless $self, 'Test::Harness::Iterator::ARRAY';
  45.         $self->{idx}   = 0;
  46.         $self->{array} = $thing;
  47.     }
  48.     else {
  49.         warn "Can't iterate with a ", ref $thing;
  50.     }
  51.  
  52.     return $self;
  53. }
  54.  
  55. package Test::Harness::Iterator::FH;
  56. sub next {
  57.     my $fh = $_[0]->{fh};
  58.     return scalar <$fh>;
  59. }
  60.  
  61.  
  62. package Test::Harness::Iterator::ARRAY;
  63. sub next {
  64.     my $self = shift;
  65.     return $self->{array}->[$self->{idx}++];
  66. }
  67.