1 package Module::Build::PodParser;
6 $VERSION = eval $VERSION;
15 $self = bless {have_pod_parser => 0, @_}, $package;
17 unless ($self->{fh}) {
18 die "No 'file' or 'fh' parameter given" unless $self->{file};
19 $self->{fh} = IO::File->new($self->{file}) or die "Couldn't open $self->{file}: $!";
25 sub parse_from_filehandle {
30 next unless /^=(?!cut)/ .. /^=cut/; # in POD
31 last if ($self->{abstract}) = /^ (?: [a-z0-9:]+ \s+ - \s+ ) (.*\S) /ix;
36 next unless /^=head1\s+AUTHORS?/i ... /^=/;
38 push @author, $_ if /\@/;
40 return unless @author;
41 s/^\s+|\s+$//g foreach @author;
43 $self->{author} = \@author;
50 return $self->{abstract} if defined $self->{abstract};
52 $self->parse_from_filehandle($self->{fh});
54 return $self->{abstract};
59 return $self->{author} if defined $self->{author};
61 $self->parse_from_filehandle($self->{fh});
63 return $self->{author} || [];