%typemember = ( 'CFG' => 'config -> ', 'PARAM' => 'param -> ', 'METHOD' => '') ; $skip = 0 ; while (defined ($line = )) { $skip = 1 if ($line =~/=cut/) ; do { $skip = 0 ; next } if ($line =~/=pod/) ; next if ($skip) ; if ($line =~ /=head2\s+\*(CFG|PARAM|METHOD)\s+(.*?)$/) { my $type = $1 ; my ($obj, $cfgname, $method, $version, $modify, $default, $see) = split (/\s*\/\s+/, $2) ; $cfgname = ucfirst (lc($cfgname)) ; $cfgname =~ s/(_.)/uc($1)/eg ; $modfiy = ($modify eq 'no' || $modfiy =~ /^\s*$/)?0:1 ; if ($cfgname) { print "=head2 $cfgname\n\n" ; } else { print "=head2 $method\n\n" ; } print "=over\n\n" ; print "=item Env:\n\n", uc ($cfgname) . "\n\n" if ($cfgname) ; print "=item Method:\n\n$obj -> $typemember{$type}$method " . ($modfiy?'':'I<[read only]>') . "\n\n" if ($method) ; print "=item Available since:\n\n$version\n\n" if ($since) ; print "=item Default:\n\n$default\n\n" if ($default) ; print "=item Since:\n\n$version\n\n" if ($version) ; print "=item See also:\n\n$see\n\n" if ($see) ; print "=back\n\n" ; } else { $line =~ s/\r//g ; print $line ; } }