| Pod-Usage-CGI documentation | Contained in the Pod-Usage-CGI distribution. |
Pod::Usage::CGI - generate usage message for CGI scripts
use CGI; use Pod::Usage::CGI; #Message is HTML-escaped my $necessary = CGI::param(foo) || pod2usage(message => "you forgot >>foo<<"); #Raw message is not escaped my $another = CGI::param(bar) || pod2usage(raw_message => "you forgot <b>bar</b>");
Provides pod2usage exit from CGI scripts. You may optionally supply a message.
By default the message text is escaped to prevent cross-site scripting injection attacks and placed in a div container of class "message" that you can optionally format with a CSS.
You can use the raw_message directive if you want to write HTML out into the page and manage your own escaping.
The module works fine under Apache::Registry but will not work in any environments where $0 is not defined.
Displays usage and exits. Valid options are:
message - message (will be automatically escaped) raw_message - message (not escaped) css - one or more CSS URLs to be applied to the page (either a scalar or an arrayref)
Pod::XHtml and either Apache or CGI are loaded on demand if required
Generates usage messages for command line scripts
$Revision: 1.10 $ on $Date: 2005/07/15 11:25:22 $ by $Author: simonf $
John Alden <cpan _at_ bbc _dot_ co _dot_ uk>
(c) BBC 2005. This program is free software; you can redistribute it and/or modify it under the GNU GPL. See the file COPYING in this distribution, or http://www.gnu.org/licenses/gpl.txt
| Pod-Usage-CGI documentation | Contained in the Pod-Usage-CGI distribution. |
package Pod::Usage::CGI; use strict; use Exporter; use vars qw($VERSION @ISA @EXPORT); $VERSION = sprintf'%d.%03d', q$Revision: 1.10 $ =~ /: (\d+)\.(\d+)/; @ISA=qw(Exporter); @EXPORT=qw(pod2usage); sub pod2usage { my %options = @_; my $message = '<div class="message">'._html_escape($options{message})."</div>\n" || $options{raw_message}; my $css = delete $options{css}; $css = [$css] if($css && ref $css ne 'array'); my $file = ($0 eq '-e')? undef : $0; require Pod::Xhtml; my $parser = new Pod::Xhtml(%options, StringMode => 1); if($css) { $parser->addHeadText(qq[<link rel="stylesheet" href="$_"/>\n]) for @$css; } $parser->addBodyOpenText($message) if($message); my $usage = ""; if($file) { $parser->parse_from_file($file); $usage = $parser->asString; } if($ENV{MOD_PERL}) { # Although Apache::Registry would do this for us # we do this to support any variants that may not require Apache; my $r = Apache->request; $r->content_type("text/html"); $r->send_http_header; $r->print($usage); Apache::exit(); } else { require CGI; print CGI::header(); print $usage; exit; } } sub _html_escape { my $str = shift; return '' unless length $str; $str =~ s/&/&/g; $str =~ s/</</g; $str =~ s/>/>/g; $str =~ s/'/'/g; $str =~ s/\"/"/g; return $str; } 1;