in reply to POD and DATA question

Well, the answer is in simple terms, ignore the customary practice. POD directives and snippets can be interspersed throughout your whole code. When using POD I often intersperse code and POD so that when I change a function the POD is right there to change as well. But even if you dont like that approach you can still put it after your last statement and BEFORE the __END__ or __DATA__ tags (same thing...) like so:
package Module; sub subroutine{} 1; =pod =cut __DATA__
Incidentally if you do mix your code and pod its not necessary to use '=pod' to start pod blocks. As far as I can tell all of the =PODCOMMAND that start a pod block stop the parser. But it IS vital that you put blank lines before and after _every_ pod directive, or they will be ignored. This is one of things that IMO make inline pod less than desirable in terms of code cohesion. But the advantages of easily documenting my code *usually* override that :-)..
package Module; =head1 Methods =head2 subroutine1 =cut sub subroutine1{} =head2 subroutine2 =cut sub subroutine2{} # more code =head1 copyright..... =cut 1; =pod Blah blah =cut __DATA__

Yves
--
You are not ready to use symrefs unless you already know why they are bad. -- tadmc (CLPM)