Remove warning for when modules don't do $VERSION = eval $VERSION.
[p5sagit/Module-Metadata.git] / lib / Module / Metadata.pm
index 10c8e68..55d4c2c 100644 (file)
@@ -61,7 +61,6 @@ my $VERS_REGEXP = qr{ # match a VERSION definition
   =[^=~]  # = but not ==, nor =~
 }x;
 
-
 sub new_from_file {
   my $class    = shift;
   my $filename = File::Spec->rel2abs( shift );
@@ -497,18 +496,20 @@ sub _parse_fh {
 
     chomp( $line );
 
+    # From toke.c : any line that begins by "=X", where X is an alphabetic
+    # character, introduces a POD segment.
     my $is_cut;
-    if ( $line =~ /^=(.{0,3})/ ) {
-      $is_cut = $1 eq 'cut';
+    if ( $line =~ /^=([a-zA-Z].*)/ ) {
+      my $cmd = $1;
+      # Then it goes back to Perl code for "=cutX" where X is a non-alphabetic
+      # character (which includes the newline, but here we chomped it away).
+      $is_cut = $cmd =~ /^cut(?:[^a-zA-Z]|$)/;
       $in_pod = !$is_cut;
     }
 
-    # Would be nice if we could also check $in_string or something too
-    last if !$in_pod && $line =~ /^__(?:DATA|END)__$/;
-
     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;
@@ -534,6 +535,9 @@ sub _parse_fh {
       # Skip comments in code
       next if $line =~ /^\s*#/;
 
+      # Would be nice if we could also check $in_string or something too
+      last if $line =~ /^__(?:DATA|END)__$/;
+
       # parse $line to see if it's a $VERSION declaration
       my( $vers_sig, $vers_fullname, $vers_pkg ) =
           ($line =~ /VERSION/)
@@ -554,14 +558,6 @@ sub _parse_fh {
        unless ( defined $vers{$vers_pkg} && length $vers{$vers_pkg} ) {
          $vers{$vers_pkg} =
            $self->_evaluate_version_line( $vers_sig, $vers_fullname, $line );
-       } else {
-         # Warn unless the user is using the "$VERSION = eval
-         # $VERSION" idiom (though there are probably other idioms
-         # that we should watch out for...)
-         warn <<"EOM" unless $line =~ /=\s*eval/;
-Package '$vers_pkg' already declared with version '$vers{$vers_pkg}',
-ignoring subsequent declaration on line $line_num.
-EOM
        }
 
       # first non-comment line in undeclared package main is VERSION