Below is the message that inspired this.
How about adding an C<=also> POD tag? It would have three syntaxes:
=also for ...
=also begin
=also end
These would be much like the existing three tags but "normal" POD
converters would completely ignore them. Then we could have:
------------8<-----------8<-----------
=begin example preamble
... setup code ...
=end example preamble
=also begin example
... example code ...
=also end example
=begin example postamble
... cleanup code && print use Test style results ...
=end example postamble
------------8<-----------8<-----------
- Barrie
Barrie Slaymaker wrote:
>
> Michael G Schwern wrote:
> >
> > Using the =for POD tag we can do this.
> >
> > =pod
> >
> > Here is a nice example of how to add one and one in Perl.
> >
> > =for example
> >
> > print 2 + 2;
> >
> > The existing POD utilities would have to be modified to consider "=for
> > example" as Perl code which is to be displayed with an implied C<> around it.
>
> I'd let the normal "leading whitespace" trigger the presentation formatting,
> but you would need to teach Pod::Parser to know about it.
>
> >
> > A little POD::Example module could be written which will find these bits of
> > code and run them through "perl -cw" and maybe a few other simple syntax
> > tests.
> >
> > Problems
> > --------
> >
> > Modifying all the POD utilities so they know to display "=for example" might
> > be a pain.
>
> Modify Pod::Parser and think of it as encouragement for people to use it.
>
> > There are backwards compatibility issues. Running a POD document with "=for
> > example" on older POD utilities will mean the examples will disappear. This
> > is a problem for which I have no solution. Maybe "=for example" isn't the
> > best syntax choice.
>
> =begin example
>
> =end example
>
> Work the same as =for example, but have the same problem.
>
> One way I can see to work around your dilema would be kludgy:
>
> =begin example_preamble
>
> #!perl -w
> use LWP::Simple
> use Test ;
>
> =end example_preamble
>
> $page = get("http://www.perl.org");
>
> =begin example_postamble
>
> ok( $page, qr/foo/ ) ;
>
> =end example_postamble
>
> Anything that is indented between =begin example_preamble and =end example_postamble
> would be the test script, anything with no leading spaces would have '# ' prepended.
>
> > Exactly how strict our testing of code examples should be is up in the air.
> > Should we just perl -c? What about warnings? strict? B::Lint? This can be
> > partially solved by providing tiers of testing. First tier might be perl -c.
> > Second might be perl -cw, etc...
>
> I snuck a #! line in there to let the coder determine it.
>
> - Barrie