Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things

Yet another POD to HTML converter

by Corion (Patriarch)
on Mar 12, 2005 at 09:54 UTC ( #438895=sourcecode: print w/replies, xml ) Need Help??
Category: HTML Utility
Author/Contact Info

Thilosophy was looking for a converter of pod to HTML. I uploaded mine, which mostly generates a local HTML tree with relative internal links.

Steal the corresponding css from

#!/usr/bin/perl -w
use strict;
use Pod::Simple::HTML;
use File::Find::Rule;
use File::Spec;
use File::Basename;
use File::Path;

=head1 NAME - create local documentation


my ($docdir,$bindir) = @ARGV;
my $rel_docroot = '.';

  no warnings 'redefine';
  sub Pod::Simple::HTML::resolve_pod_page_link {
    my ($self,$link) = @_;
    my $to = $link;
    $to =~ s!::!-!g;
    $to .= '.html';
    # warn "$rel_docroot/$to";
    return "$rel_docroot/$to";

my @files = File::Find::Rule->file()->name(qr(^.*\.(pm|pl|pod)$))->in(

for my $file (@files) {
  my $input = $file;

  my @outfile = File::Spec->splitdir( File::Spec->abs2rel( $file, $bin
+dir ));
  my $outfile = File::Spec->catfile( $docdir, join "-", @outfile );
  $outfile =~ s/\.[^.]+$/.html/;
  # print "Generating $outfile";

  my $stylesheet = "style.css";

  my $parser = Pod::Simple::HTML->new();
  my $html;
  $html =~ s!</title>\s*</head>!</title><link rel="stylesheet" href="$
+stylesheet" /></head>!sm;

  open OUTPUT, ">", $outfile
    or die "Couldn't create '$outfile': $!";
  print OUTPUT $html;
  close OUTPUT;

  # print ", done.\n";

=head1 AUTHOR

Max Maischein (

Replies are listed 'Best First'.
Re: Yet another POD to HTML converter
by dpavlin (Friar) on Mar 12, 2005 at 18:15 UTC
    Thanks for nice script. I had to change regex which adds stylesheet to:
    $html =~ s!</head>!<link rel="stylesheet" href="$stylesheet" /></head> +!sm;
    I think that this change show make it more compatibile with various html formats that Pod::Simple::HTML produce (I might have different version than you).

Re: Yet another POD to HTML converter
by jmcnamara (Monsignor) on Mar 14, 2005 at 13:11 UTC

    With 3.xx versions of Pod::Simple and Pod::Simple::HTML you can specify the CSS source using the html_css() method:
    ... $parser->output_string($html); $parser->html_css(qq(<link rel="stylesheet" href="$stylesheet"/>)); $parser->parse_file($file); ...
    That way you don't have to do the s///.

    An alternative approach to the general problem would be to use Pod::Webserver.


Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: sourcecode [id://438895]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (2)
As of 2023-02-09 03:37 GMT
Find Nodes?
    Voting Booth?
    I prefer not to run the latest version of Perl because:

    Results (44 votes). Check out past polls.