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 open($self->{fh}, '<', $self->{file}) or die "Couldn't open $self->{file}: $!";
25 sub parse_from_filehandle {
30 next unless /^=(?!cut)/ .. /^=cut/; # in POD
31 # Accept Name - abstract or C<Name> - abstract
32 last if ($self->{abstract}) = /^ (?: [a-z_0-9:]+ | [BCIF] < [a-z_0-9:]+ > ) \s+ - \s+ (.*\S) /ix;
37 next unless /^=head1\s+AUTHORS?/i ... /^=/;
39 push @author, $_ if /\@/;
41 return unless @author;
42 s/^\s+|\s+$//g foreach @author;
44 $self->{author} = \@author;
51 return $self->{abstract} if defined $self->{abstract};
53 $self->parse_from_filehandle($self->{fh});
55 return $self->{abstract};
60 return $self->{author} if defined $self->{author};
62 $self->parse_from_filehandle($self->{fh});
64 return $self->{author} || [];