X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FModule%2FMetadata.pm;h=e5910d09a065202a8fa368cf58fe7d6a2b3bb774;hb=a4aafbc2cda96948f9a5dd4475d0f78f27d29afe;hp=d0b470ddc49dbe4f64d5e14b99c3add9e00d44f3;hpb=617f8754bb241226d652e6abfa2e03e5ffa86e46;p=p5sagit%2FModule-Metadata.git diff --git a/lib/Module/Metadata.pm b/lib/Module/Metadata.pm index d0b470d..e5910d0 100644 --- a/lib/Module/Metadata.pm +++ b/lib/Module/Metadata.pm @@ -61,6 +61,9 @@ my $VERS_REGEXP = qr{ # match a VERSION definition =[^=~] # = but not ==, nor =~ }x; +my $PODSECT_REGEXP = qr{ + ^=(cut|pod|head[1-4]|over|item|back|begin|end|for|encoding)\b +}x; sub new_from_file { my $class = shift; @@ -496,10 +499,9 @@ sub _parse_fh { my $line_num = $.; chomp( $line ); - next if $line =~ /^\s*#/; my $is_cut; - if ( $line =~ /^=(.{0,3})/ ) { + if ( $line =~ /$PODSECT_REGEXP/o ) { $is_cut = $1 eq 'cut'; $in_pod = !$is_cut; } @@ -509,7 +511,7 @@ sub _parse_fh { if ( $in_pod ) { - if ( $line =~ /^=head\d\s+(.+)\s*$/ ) { + if ( $line =~ /^=head[1-4]\s+(.+)\s*$/ ) { push( @pod, $1 ); if ( $self->{collect_pod} && length( $pod_data ) ) { $pod{$pod_sect} = $pod_data; @@ -532,6 +534,9 @@ sub _parse_fh { } else { + # Skip comments in code + next if $line =~ /^\s*#/; + # parse $line to see if it's a $VERSION declaration my( $vers_sig, $vers_fullname, $vers_pkg ) = ($line =~ /VERSION/) @@ -541,7 +546,7 @@ sub _parse_fh { if ( $line =~ /$PKG_REGEXP/o ) { $pkg = $1; push( @pkgs, $pkg ) unless grep( $pkg eq $_, @pkgs ); - $vers{$pkg} = (defined $2 ? $2 : undef) unless exists( $vers{$pkg} ); + $vers{$pkg} = $2 unless exists( $vers{$pkg} ); $need_vers = defined $2 ? 0 : 1; # VERSION defined with full package spec, i.e. $Module::VERSION