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