in reply to multiple __DATA__ && __END__

I was unaware of the nifty modules mentioned. Up until now I have tended use prefixes to distinguish multiple categories of data in the __DATA__ section. If for aesthetic reasons you want to stick a __DATA__ section before __END__ (after which you could, e.g., have your POD), just stop reading from DATA when you see /^__END__$/.

E.g.:

use strict;
use warnings;

while (<DATA>) {
  chomp;
  last if /^__END__$/;         # stop when __END__ is encountered
  next if /^\s*(#.*|\s*)$/;   # skip blank lines or comment lines
  # Clip out and remove category prefix ("word" characters terminated by a colon)
  if (s/^(\w+)://) {
    my $category = $1;
    # P.S.  It's not really necessary to copy $1, but good if you are going to be 
    # fooling with other regex stuff.
    print "$_ is in the $category category\n";
  } else {
    die "unexpected input in __DATA__ section: '$_'";
  }
}

exit 0;

__DATA__

# 3 categories: animal, vegetable, and mineral
ANIMAL:dog
ANIMAL:cat

VEGETABLE:apple
VEGETABLE:mushroom, the State Vegetable of Pennsylvania,

MINERAL:granite

__END__

=pod

hoo hah

=cut