home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / share / perl / 5.10.0 / Test / Harness / Iterator.pm < prev    next >
Encoding:
Perl POD Document  |  2009-06-26  |  1.3 KB  |  71 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.  
  59.     # readline() doesn't work so good on 5.5.4.
  60.     return scalar <$fh>;
  61. }
  62.  
  63.  
  64. package Test::Harness::Iterator::ARRAY;
  65. sub next {
  66.     my $self = shift;
  67.     return $self->{array}->[$self->{idx}++];
  68. }
  69.  
  70. "Steve Peters, Master Of True Value Finding, was here.";
  71.