summaryrefslogtreecommitdiffstats
path: root/contrib/perl5/lib/CGI
diff options
context:
space:
mode:
authormarkm <markm@FreeBSD.org>2002-03-16 22:35:55 +0000
committermarkm <markm@FreeBSD.org>2002-03-16 22:35:55 +0000
commit0461d253df33e5f57be9816f42946f63a61854d1 (patch)
treebfa3c40437ffce8409065d8fff06dba8b2eaabb7 /contrib/perl5/lib/CGI
parent6921b1a9a737ac64d864891f28e25abc5fad97a6 (diff)
downloadFreeBSD-src-0461d253df33e5f57be9816f42946f63a61854d1.zip
FreeBSD-src-0461d253df33e5f57be9816f42946f63a61854d1.tar.gz
Punt to attic files not in 5.6.1 OR not needed by FreeBSD.
Diffstat (limited to 'contrib/perl5/lib/CGI')
-rw-r--r--contrib/perl5/lib/CGI/Apache.pm23
-rw-r--r--contrib/perl5/lib/CGI/Carp.pm373
-rw-r--r--contrib/perl5/lib/CGI/Cookie.pm418
-rw-r--r--contrib/perl5/lib/CGI/Fast.pm174
-rw-r--r--contrib/perl5/lib/CGI/Pretty.pm236
-rw-r--r--contrib/perl5/lib/CGI/Push.pm307
-rw-r--r--contrib/perl5/lib/CGI/Switch.pm24
7 files changed, 0 insertions, 1555 deletions
diff --git a/contrib/perl5/lib/CGI/Apache.pm b/contrib/perl5/lib/CGI/Apache.pm
deleted file mode 100644
index dced866..0000000
--- a/contrib/perl5/lib/CGI/Apache.pm
+++ /dev/null
@@ -1,23 +0,0 @@
-use CGI;
-1;
-__END__
-
-=head1 NAME
-
-CGI::Apache - Backward compatibility module for CGI.pm
-
-=head1 SYNOPSIS
-
-Do not use this module. It is deprecated.
-
-=head1 ABSTRACT
-
-=head1 DESCRIPTION
-
-=head1 AUTHOR INFORMATION
-
-=head1 BUGS
-
-=head1 SEE ALSO
-
-=cut
diff --git a/contrib/perl5/lib/CGI/Carp.pm b/contrib/perl5/lib/CGI/Carp.pm
deleted file mode 100644
index 90e9552..0000000
--- a/contrib/perl5/lib/CGI/Carp.pm
+++ /dev/null
@@ -1,373 +0,0 @@
-package CGI::Carp;
-
-=head1 NAME
-
-B<CGI::Carp> - CGI routines for writing to the HTTPD (or other) error log
-
-=head1 SYNOPSIS
-
- use CGI::Carp;
-
- croak "We're outta here!";
- confess "It was my fault: $!";
- carp "It was your fault!";
- warn "I'm confused";
- die "I'm dying.\n";
-
- use CGI::Carp qw(cluck);
- cluck "I wouldn't do that if I were you";
-
- use CGI::Carp qw(fatalsToBrowser);
- die "Fatal error messages are now sent to browser";
-
-=head1 DESCRIPTION
-
-CGI scripts have a nasty habit of leaving warning messages in the error
-logs that are neither time stamped nor fully identified. Tracking down
-the script that caused the error is a pain. This fixes that. Replace
-the usual
-
- use Carp;
-
-with
-
- use CGI::Carp
-
-And the standard warn(), die (), croak(), confess() and carp() calls
-will automagically be replaced with functions that write out nicely
-time-stamped messages to the HTTP server error log.
-
-For example:
-
- [Fri Nov 17 21:40:43 1995] test.pl: I'm confused at test.pl line 3.
- [Fri Nov 17 21:40:43 1995] test.pl: Got an error message: Permission denied.
- [Fri Nov 17 21:40:43 1995] test.pl: I'm dying.
-
-=head1 REDIRECTING ERROR MESSAGES
-
-By default, error messages are sent to STDERR. Most HTTPD servers
-direct STDERR to the server's error log. Some applications may wish
-to keep private error logs, distinct from the server's error log, or
-they may wish to direct error messages to STDOUT so that the browser
-will receive them.
-
-The C<carpout()> function is provided for this purpose. Since
-carpout() is not exported by default, you must import it explicitly by
-saying
-
- use CGI::Carp qw(carpout);
-
-The carpout() function requires one argument, which should be a
-reference to an open filehandle for writing errors. It should be
-called in a C<BEGIN> block at the top of the CGI application so that
-compiler errors will be caught. Example:
-
- BEGIN {
- use CGI::Carp qw(carpout);
- open(LOG, ">>/usr/local/cgi-logs/mycgi-log") or
- die("Unable to open mycgi-log: $!\n");
- carpout(LOG);
- }
-
-carpout() does not handle file locking on the log for you at this point.
-
-The real STDERR is not closed -- it is moved to SAVEERR. Some
-servers, when dealing with CGI scripts, close their connection to the
-browser when the script closes STDOUT and STDERR. SAVEERR is used to
-prevent this from happening prematurely.
-
-You can pass filehandles to carpout() in a variety of ways. The "correct"
-way according to Tom Christiansen is to pass a reference to a filehandle
-GLOB:
-
- carpout(\*LOG);
-
-This looks weird to mere mortals however, so the following syntaxes are
-accepted as well:
-
- carpout(LOG);
- carpout(main::LOG);
- carpout(main'LOG);
- carpout(\LOG);
- carpout(\'main::LOG');
-
- ... and so on
-
-FileHandle and other objects work as well.
-
-Use of carpout() is not great for performance, so it is recommended
-for debugging purposes or for moderate-use applications. A future
-version of this module may delay redirecting STDERR until one of the
-CGI::Carp methods is called to prevent the performance hit.
-
-=head1 MAKING PERL ERRORS APPEAR IN THE BROWSER WINDOW
-
-If you want to send fatal (die, confess) errors to the browser, ask to
-import the special "fatalsToBrowser" subroutine:
-
- use CGI::Carp qw(fatalsToBrowser);
- die "Bad error here";
-
-Fatal errors will now be echoed to the browser as well as to the log. CGI::Carp
-arranges to send a minimal HTTP header to the browser so that even errors that
-occur in the early compile phase will be seen.
-Nonfatal errors will still be directed to the log file only (unless redirected
-with carpout).
-
-=head2 Changing the default message
-
-By default, the software error message is followed by a note to
-contact the Webmaster by e-mail with the time and date of the error.
-If this message is not to your liking, you can change it using the
-set_message() routine. This is not imported by default; you should
-import it on the use() line:
-
- use CGI::Carp qw(fatalsToBrowser set_message);
- set_message("It's not a bug, it's a feature!");
-
-You may also pass in a code reference in order to create a custom
-error message. At run time, your code will be called with the text
-of the error message that caused the script to die. Example:
-
- use CGI::Carp qw(fatalsToBrowser set_message);
- BEGIN {
- sub handle_errors {
- my $msg = shift;
- print "<h1>Oh gosh</h1>";
- print "Got an error: $msg";
- }
- set_message(\&handle_errors);
- }
-
-In order to correctly intercept compile-time errors, you should call
-set_message() from within a BEGIN{} block.
-
-=head1 CHANGE LOG
-
-1.05 carpout() added and minor corrections by Marc Hedlund
- <hedlund@best.com> on 11/26/95.
-
-1.06 fatalsToBrowser() no longer aborts for fatal errors within
- eval() statements.
-
-1.08 set_message() added and carpout() expanded to allow for FileHandle
- objects.
-
-1.09 set_message() now allows users to pass a code REFERENCE for
- really custom error messages. croak and carp are now
- exported by default. Thanks to Gunther Birznieks for the
- patches.
-
-1.10 Patch from Chris Dean (ctdean@cogit.com) to allow
- module to run correctly under mod_perl.
-
-1.11 Changed order of &gt; and &lt; escapes.
-
-1.12 Changed die() on line 217 to CORE::die to avoid B<-w> warning.
-
-1.13 Added cluck() to make the module orthogonal with Carp.
- More mod_perl related fixes.
-
-=head1 AUTHORS
-
-Copyright 1995-1998, Lincoln D. Stein. All rights reserved.
-
-This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-Address bug reports and comments to: lstein@cshl.org
-
-=head1 SEE ALSO
-
-Carp, CGI::Base, CGI::BasePlus, CGI::Request, CGI::MiniSvr, CGI::Form,
-CGI::Response
-
-=cut
-
-require 5.000;
-use Exporter;
-use Carp;
-
-@ISA = qw(Exporter);
-@EXPORT = qw(confess croak carp);
-@EXPORT_OK = qw(carpout fatalsToBrowser wrap set_message cluck);
-
-BEGIN {
- $] >= 5.005
- ? eval q#sub ineval { $^S }#
- : eval q#sub ineval { _longmess() =~ /eval [\{\']/m }#;
- $@ and die;
-}
-
-$main::SIG{__WARN__}=\&CGI::Carp::warn;
-$main::SIG{__DIE__}=\&CGI::Carp::die;
-$CGI::Carp::VERSION = '1.14';
-$CGI::Carp::CUSTOM_MSG = undef;
-
-# fancy import routine detects and handles 'errorWrap' specially.
-sub import {
- my $pkg = shift;
- my(%routines);
- grep($routines{$_}++,@_,@EXPORT);
- $WRAP++ if $routines{'fatalsToBrowser'} || $routines{'wrap'};
- my($oldlevel) = $Exporter::ExportLevel;
- $Exporter::ExportLevel = 1;
- Exporter::import($pkg,keys %routines);
- $Exporter::ExportLevel = $oldlevel;
-}
-
-# These are the originals
-sub realwarn { CORE::warn(@_); }
-sub realdie { CORE::die(@_); }
-
-sub id {
- my $level = shift;
- my($pack,$file,$line,$sub) = caller($level);
- my($id) = $file=~m|([^/]+)\z|;
- return ($file,$line,$id);
-}
-
-sub stamp {
- my $time = scalar(localtime);
- my $frame = 0;
- my ($id,$pack,$file);
- do {
- $id = $file;
- ($pack,$file) = caller($frame++);
- } until !$file;
- ($id) = $id=~m|([^/]+)\z|;
- return "[$time] $id: ";
-}
-
-sub warn {
- my $message = shift;
- my($file,$line,$id) = id(1);
- $message .= " at $file line $line.\n" unless $message=~/\n$/;
- my $stamp = stamp;
- $message=~s/^/$stamp/gm;
- realwarn $message;
-}
-
-# The mod_perl package Apache::Registry loads CGI programs by calling
-# eval. These evals don't count when looking at the stack backtrace.
-sub _longmess {
- my $message = Carp::longmess();
- my $mod_perl = exists $ENV{MOD_PERL};
- $message =~ s,eval[^\n]+Apache/Registry\.pm.*,,s if $mod_perl;
- return( $message );
-}
-
-sub die {
- realdie @_ if ineval;
- my $message = shift;
- my $time = scalar(localtime);
- my($file,$line,$id) = id(1);
- $message .= " at $file line $line." unless $message=~/\n$/;
- &fatalsToBrowser($message) if $WRAP;
- my $stamp = stamp;
- $message=~s/^/$stamp/gm;
- realdie $message;
-}
-
-sub set_message {
- $CGI::Carp::CUSTOM_MSG = shift;
- return $CGI::Carp::CUSTOM_MSG;
-}
-
-# Avoid generating "subroutine redefined" warnings with the following
-# hack:
-{
- local $^W=0;
- eval <<EOF;
-sub confess { CGI::Carp::die Carp::longmess \@_; }
-sub croak { CGI::Carp::die Carp::shortmess \@_; }
-sub carp { CGI::Carp::warn Carp::shortmess \@_; }
-sub cluck { CGI::Carp::warn Carp::longmess \@_; }
-EOF
- ;
-}
-
-# We have to be ready to accept a filehandle as a reference
-# or a string.
-sub carpout {
- my($in) = @_;
- my($no) = fileno(to_filehandle($in));
- realdie("Invalid filehandle $in\n") unless defined $no;
-
- open(SAVEERR, ">&STDERR");
- open(STDERR, ">&$no") or
- ( print SAVEERR "Unable to redirect STDERR: $!\n" and exit(1) );
-}
-
-# headers
-sub fatalsToBrowser {
- my($msg) = @_;
- $msg=~s/&/&amp;/g;
- $msg=~s/>/&gt;/g;
- $msg=~s/</&lt;/g;
- $msg=~s/\"/&quot;/g;
- my($wm) = $ENV{SERVER_ADMIN} ?
- qq[the webmaster (<a href="mailto:$ENV{SERVER_ADMIN}">$ENV{SERVER_ADMIN}</a>)] :
- "this site's webmaster";
- my ($outer_message) = <<END;
-For help, please send mail to $wm, giving this error message
-and the time and date of the error.
-END
- ;
- my $mod_perl = exists $ENV{MOD_PERL};
- print STDOUT "Content-type: text/html\n\n"
- unless $mod_perl;
-
- if ($CUSTOM_MSG) {
- if (ref($CUSTOM_MSG) eq 'CODE') {
- &$CUSTOM_MSG($msg); # nicer to perl 5.003 users
- return;
- } else {
- $outer_message = $CUSTOM_MSG;
- }
- }
-
- my $mess = <<END;
-<H1>Software error:</H1>
-<CODE>$msg</CODE>
-<P>
-$outer_message
-END
- ;
-
- if ($mod_perl) {
- my $r = Apache->request;
- # If bytes have already been sent, then
- # we print the message out directly.
- # Otherwise we make a custom error
- # handler to produce the doc for us.
- if ($r->bytes_sent) {
- $r->print($mess);
- $r->exit;
- } else {
- $r->status(500);
- $r->custom_response(500,$mess);
- }
- } else {
- print STDOUT $mess;
- }
-}
-
-# Cut and paste from CGI.pm so that we don't have the overhead of
-# always loading the entire CGI module.
-sub to_filehandle {
- my $thingy = shift;
- return undef unless $thingy;
- return $thingy if UNIVERSAL::isa($thingy,'GLOB');
- return $thingy if UNIVERSAL::isa($thingy,'FileHandle');
- if (!ref($thingy)) {
- my $caller = 1;
- while (my $package = caller($caller++)) {
- my($tmp) = $thingy=~/[\':]/ ? $thingy : "$package\:\:$thingy";
- return $tmp if defined(fileno($tmp));
- }
- }
- return undef;
-}
-
-1;
diff --git a/contrib/perl5/lib/CGI/Cookie.pm b/contrib/perl5/lib/CGI/Cookie.pm
deleted file mode 100644
index bd3c3d8..0000000
--- a/contrib/perl5/lib/CGI/Cookie.pm
+++ /dev/null
@@ -1,418 +0,0 @@
-package CGI::Cookie;
-
-# See the bottom of this file for the POD documentation. Search for the
-# string '=head'.
-
-# You can run this file through either pod2man or pod2html to produce pretty
-# documentation in manual or html file format (these utilities are part of the
-# Perl 5 distribution).
-
-# Copyright 1995-1999, Lincoln D. Stein. All rights reserved.
-# It may be used and modified freely, but I do request that this copyright
-# notice remain attached to the file. You may modify this module as you
-# wish, but if you redistribute a modified version, please attach a note
-# listing the modifications you have made.
-
-$CGI::Cookie::VERSION='1.12';
-
-use CGI qw(-no_debug);
-use overload '""' => \&as_string,
- 'cmp' => \&compare,
- 'fallback'=>1;
-
-# fetch a list of cookies from the environment and
-# return as a hash. the cookies are parsed as normal
-# escaped URL data.
-sub fetch {
- my $class = shift;
- my $raw_cookie = $ENV{HTTP_COOKIE} || $ENV{COOKIE};
- return () unless $raw_cookie;
- return $class->parse($raw_cookie);
-}
-
-# fetch a list of cookies from the environment and
-# return as a hash. the cookie values are not unescaped
-# or altered in any way.
-sub raw_fetch {
- my $class = shift;
- my $raw_cookie = $ENV{HTTP_COOKIE} || $ENV{COOKIE};
- return () unless $raw_cookie;
- my %results;
- my($key,$value);
-
- my(@pairs) = split("; ",$raw_cookie);
- foreach (@pairs) {
- if (/^([^=]+)=(.*)/) {
- $key = $1;
- $value = $2;
- }
- else {
- $key = $_;
- $value = '';
- }
- $results{$key} = $value;
- }
- return \%results unless wantarray;
- return %results;
-}
-
-sub parse {
- my ($self,$raw_cookie) = @_;
- my %results;
-
- my(@pairs) = split("; ",$raw_cookie);
- foreach (@pairs) {
- my($key,$value) = split("=");
- my(@values) = map CGI::unescape($_),split('&',$value);
- $key = CGI::unescape($key);
- # A bug in Netscape can cause several cookies with same name to
- # appear. The FIRST one in HTTP_COOKIE is the most recent version.
- $results{$key} ||= $self->new(-name=>$key,-value=>\@values);
- }
- return \%results unless wantarray;
- return %results;
-}
-
-sub new {
- my $class = shift;
- $class = ref($class) if ref($class);
- my($name,$value,$path,$domain,$secure,$expires) =
- CGI->rearrange([NAME,[VALUE,VALUES],PATH,DOMAIN,SECURE,EXPIRES],@_);
-
- # Pull out our parameters.
- my @values;
- if (ref($value)) {
- if (ref($value) eq 'ARRAY') {
- @values = @$value;
- } elsif (ref($value) eq 'HASH') {
- @values = %$value;
- }
- } else {
- @values = ($value);
- }
-
- bless my $self = {
- 'name'=>$name,
- 'value'=>[@values],
- },$class;
-
- # IE requires the path and domain to be present for some reason.
- $path = CGI::url(-absolute=>1) unless defined $path;
-# however, this breaks networks which use host tables without fully qualified
-# names, so we comment it out.
-# $domain = CGI::virtual_host() unless defined $domain;
-
- $self->path($path) if defined $path;
- $self->domain($domain) if defined $domain;
- $self->secure($secure) if defined $secure;
- $self->expires($expires) if defined $expires;
- return $self;
-}
-
-sub as_string {
- my $self = shift;
- return "" unless $self->name;
-
- my(@constant_values,$domain,$path,$expires,$secure);
-
- push(@constant_values,"domain=$domain") if $domain = $self->domain;
- push(@constant_values,"path=$path") if $path = $self->path;
- push(@constant_values,"expires=$expires") if $expires = $self->expires;
- push(@constant_values,'secure') if $secure = $self->secure;
-
- my($key) = CGI::escape($self->name);
- my($cookie) = join("=",$key,join("&",map CGI::escape($_),$self->value));
- return join("; ",$cookie,@constant_values);
-}
-
-sub compare {
- my $self = shift;
- my $value = shift;
- return "$self" cmp $value;
-}
-
-# accessors
-sub name {
- my $self = shift;
- my $name = shift;
- $self->{'name'} = $name if defined $name;
- return $self->{'name'};
-}
-
-sub value {
- my $self = shift;
- my $value = shift;
- $self->{'value'} = $value if defined $value;
- return wantarray ? @{$self->{'value'}} : $self->{'value'}->[0]
-}
-
-sub domain {
- my $self = shift;
- my $domain = shift;
- $self->{'domain'} = $domain if defined $domain;
- return $self->{'domain'};
-}
-
-sub secure {
- my $self = shift;
- my $secure = shift;
- $self->{'secure'} = $secure if defined $secure;
- return $self->{'secure'};
-}
-
-sub expires {
- my $self = shift;
- my $expires = shift;
- $self->{'expires'} = CGI::expires($expires,'cookie') if defined $expires;
- return $self->{'expires'};
-}
-
-sub path {
- my $self = shift;
- my $path = shift;
- $self->{'path'} = $path if defined $path;
- return $self->{'path'};
-}
-
-1;
-
-=head1 NAME
-
-CGI::Cookie - Interface to Netscape Cookies
-
-=head1 SYNOPSIS
-
- use CGI qw/:standard/;
- use CGI::Cookie;
-
- # Create new cookies and send them
- $cookie1 = new CGI::Cookie(-name=>'ID',-value=>123456);
- $cookie2 = new CGI::Cookie(-name=>'preferences',
- -value=>{ font => Helvetica,
- size => 12 }
- );
- print header(-cookie=>[$cookie1,$cookie2]);
-
- # fetch existing cookies
- %cookies = fetch CGI::Cookie;
- $id = $cookies{'ID'}->value;
-
- # create cookies returned from an external source
- %cookies = parse CGI::Cookie($ENV{COOKIE});
-
-=head1 DESCRIPTION
-
-CGI::Cookie is an interface to Netscape (HTTP/1.1) cookies, an
-innovation that allows Web servers to store persistent information on
-the browser's side of the connection. Although CGI::Cookie is
-intended to be used in conjunction with CGI.pm (and is in fact used by
-it internally), you can use this module independently.
-
-For full information on cookies see
-
- http://www.ics.uci.edu/pub/ietf/http/rfc2109.txt
-
-=head1 USING CGI::Cookie
-
-CGI::Cookie is object oriented. Each cookie object has a name and a
-value. The name is any scalar value. The value is any scalar or
-array value (associative arrays are also allowed). Cookies also have
-several optional attributes, including:
-
-=over 4
-
-=item B<1. expiration date>
-
-The expiration date tells the browser how long to hang on to the
-cookie. If the cookie specifies an expiration date in the future, the
-browser will store the cookie information in a disk file and return it
-to the server every time the user reconnects (until the expiration
-date is reached). If the cookie species an expiration date in the
-past, the browser will remove the cookie from the disk file. If the
-expiration date is not specified, the cookie will persist only until
-the user quits the browser.
-
-=item B<2. domain>
-
-This is a partial or complete domain name for which the cookie is
-valid. The browser will return the cookie to any host that matches
-the partial domain name. For example, if you specify a domain name
-of ".capricorn.com", then Netscape will return the cookie to
-Web servers running on any of the machines "www.capricorn.com",
-"ftp.capricorn.com", "feckless.capricorn.com", etc. Domain names
-must contain at least two periods to prevent attempts to match
-on top level domains like ".edu". If no domain is specified, then
-the browser will only return the cookie to servers on the host the
-cookie originated from.
-
-=item B<3. path>
-
-If you provide a cookie path attribute, the browser will check it
-against your script's URL before returning the cookie. For example,
-if you specify the path "/cgi-bin", then the cookie will be returned
-to each of the scripts "/cgi-bin/tally.pl", "/cgi-bin/order.pl", and
-"/cgi-bin/customer_service/complain.pl", but not to the script
-"/cgi-private/site_admin.pl". By default, the path is set to your
-script, so that only it will receive the cookie.
-
-=item B<4. secure flag>
-
-If the "secure" attribute is set, the cookie will only be sent to your
-script if the CGI request is occurring on a secure channel, such as SSL.
-
-=back
-
-=head2 Creating New Cookies
-
- $c = new CGI::Cookie(-name => 'foo',
- -value => 'bar',
- -expires => '+3M',
- -domain => '.capricorn.com',
- -path => '/cgi-bin/database'
- -secure => 1
- );
-
-Create cookies from scratch with the B<new> method. The B<-name> and
-B<-value> parameters are required. The name must be a scalar value.
-The value can be a scalar, an array reference, or a hash reference.
-(At some point in the future cookies will support one of the Perl
-object serialization protocols for full generality).
-
-B<-expires> accepts any of the relative or absolute date formats
-recognized by CGI.pm, for example "+3M" for three months in the
-future. See CGI.pm's documentation for details.
-
-B<-domain> points to a domain name or to a fully qualified host name.
-If not specified, the cookie will be returned only to the Web server
-that created it.
-
-B<-path> points to a partial URL on the current server. The cookie
-will be returned to all URLs beginning with the specified path. If
-not specified, it defaults to '/', which returns the cookie to all
-pages at your site.
-
-B<-secure> if set to a true value instructs the browser to return the
-cookie only when a cryptographic protocol is in use.
-
-=head2 Sending the Cookie to the Browser
-
-Within a CGI script you can send a cookie to the browser by creating
-one or more Set-Cookie: fields in the HTTP header. Here is a typical
-sequence:
-
- my $c = new CGI::Cookie(-name => 'foo',
- -value => ['bar','baz'],
- -expires => '+3M');
-
- print "Set-Cookie: $c\n";
- print "Content-Type: text/html\n\n";
-
-To send more than one cookie, create several Set-Cookie: fields.
-Alternatively, you may concatenate the cookies together with "; " and
-send them in one field.
-
-If you are using CGI.pm, you send cookies by providing a -cookie
-argument to the header() method:
-
- print header(-cookie=>$c);
-
-Mod_perl users can set cookies using the request object's header_out()
-method:
-
- $r->header_out('Set-Cookie',$c);
-
-Internally, Cookie overloads the "" operator to call its as_string()
-method when incorporated into the HTTP header. as_string() turns the
-Cookie's internal representation into an RFC-compliant text
-representation. You may call as_string() yourself if you prefer:
-
- print "Set-Cookie: ",$c->as_string,"\n";
-
-=head2 Recovering Previous Cookies
-
- %cookies = fetch CGI::Cookie;
-
-B<fetch> returns an associative array consisting of all cookies
-returned by the browser. The keys of the array are the cookie names. You
-can iterate through the cookies this way:
-
- %cookies = fetch CGI::Cookie;
- foreach (keys %cookies) {
- do_something($cookies{$_});
- }
-
-In a scalar context, fetch() returns a hash reference, which may be more
-efficient if you are manipulating multiple cookies.
-
-CGI.pm uses the URL escaping methods to save and restore reserved characters
-in its cookies. If you are trying to retrieve a cookie set by a foreign server,
-this escaping method may trip you up. Use raw_fetch() instead, which has the
-same semantics as fetch(), but performs no unescaping.
-
-You may also retrieve cookies that were stored in some external
-form using the parse() class method:
-
- $COOKIES = `cat /usr/tmp/Cookie_stash`;
- %cookies = parse CGI::Cookie($COOKIES);
-
-=head2 Manipulating Cookies
-
-Cookie objects have a series of accessor methods to get and set cookie
-attributes. Each accessor has a similar syntax. Called without
-arguments, the accessor returns the current value of the attribute.
-Called with an argument, the accessor changes the attribute and
-returns its new value.
-
-=over 4
-
-=item B<name()>
-
-Get or set the cookie's name. Example:
-
- $name = $c->name;
- $new_name = $c->name('fred');
-
-=item B<value()>
-
-Get or set the cookie's value. Example:
-
- $value = $c->value;
- @new_value = $c->value(['a','b','c','d']);
-
-B<value()> is context sensitive. In an array context it will return
-the current value of the cookie as an array. In a scalar context it
-will return the B<first> value of a multivalued cookie.
-
-=item B<domain()>
-
-Get or set the cookie's domain.
-
-=item B<path()>
-
-Get or set the cookie's path.
-
-=item B<expires()>
-
-Get or set the cookie's expiration time.
-
-=back
-
-
-=head1 AUTHOR INFORMATION
-
-Copyright 1997-1998, Lincoln D. Stein. All rights reserved.
-
-This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-Address bug reports and comments to: lstein@cshl.org
-
-=head1 BUGS
-
-This section intentionally left blank.
-
-=head1 SEE ALSO
-
-L<CGI::Carp>, L<CGI>
-
-=cut
diff --git a/contrib/perl5/lib/CGI/Fast.pm b/contrib/perl5/lib/CGI/Fast.pm
deleted file mode 100644
index b485186..0000000
--- a/contrib/perl5/lib/CGI/Fast.pm
+++ /dev/null
@@ -1,174 +0,0 @@
-package CGI::Fast;
-
-# See the bottom of this file for the POD documentation. Search for the
-# string '=head'.
-
-# You can run this file through either pod2man or pod2html to produce pretty
-# documentation in manual or html file format (these utilities are part of the
-# Perl 5 distribution).
-
-# Copyright 1995,1996, Lincoln D. Stein. All rights reserved.
-# It may be used and modified freely, but I do request that this copyright
-# notice remain attached to the file. You may modify this module as you
-# wish, but if you redistribute a modified version, please attach a note
-# listing the modifications you have made.
-
-# The most recent version and complete docs are available at:
-# http://www.genome.wi.mit.edu/ftp/pub/software/WWW/cgi_docs.html
-# ftp://ftp-genome.wi.mit.edu/pub/software/WWW/
-$CGI::Fast::VERSION='1.02';
-
-use CGI;
-use FCGI;
-@ISA = ('CGI');
-
-# workaround for known bug in libfcgi
-while (($ignore) = each %ENV) { }
-
-# override the initialization behavior so that
-# state is NOT maintained between invocations
-sub save_request {
- # no-op
-}
-
-# New is slightly different in that it calls FCGI's
-# accept() method.
-sub new {
- my ($self, $initializer, @param) = @_;
- unless (defined $initializer) {
- return undef unless FCGI::accept() >= 0;
- }
- return $CGI::Q = $self->SUPER::new($initializer, @param);
-}
-
-1;
-
-=head1 NAME
-
-CGI::Fast - CGI Interface for Fast CGI
-
-=head1 SYNOPSIS
-
- use CGI::Fast qw(:standard);
- $COUNTER = 0;
- while (new CGI::Fast) {
- print header;
- print start_html("Fast CGI Rocks");
- print
- h1("Fast CGI Rocks"),
- "Invocation number ",b($COUNTER++),
- " PID ",b($$),".",
- hr;
- print end_html;
- }
-
-=head1 DESCRIPTION
-
-CGI::Fast is a subclass of the CGI object created by
-CGI.pm. It is specialized to work well with the Open Market
-FastCGI standard, which greatly speeds up CGI scripts by
-turning them into persistently running server processes. Scripts
-that perform time-consuming initialization processes, such as
-loading large modules or opening persistent database connections,
-will see large performance improvements.
-
-=head1 OTHER PIECES OF THE PUZZLE
-
-In order to use CGI::Fast you'll need a FastCGI-enabled Web
-server. Open Market's server is FastCGI-savvy. There are also
-freely redistributable FastCGI modules for NCSA httpd 1.5 and Apache.
-FastCGI-enabling modules for Microsoft Internet Information Server and
-Netscape Communications Server have been announced.
-
-In addition, you'll need a version of the Perl interpreter that has
-been linked with the FastCGI I/O library. Precompiled binaries are
-available for several platforms, including DEC Alpha, HP-UX and
-SPARC/Solaris, or you can rebuild Perl from source with patches
-provided in the FastCGI developer's kit. The FastCGI Perl interpreter
-can be used in place of your normal Perl without ill consequences.
-
-You can find FastCGI modules for Apache and NCSA httpd, precompiled
-Perl interpreters, and the FastCGI developer's kit all at URL:
-
- http://www.fastcgi.com/
-
-=head1 WRITING FASTCGI PERL SCRIPTS
-
-FastCGI scripts are persistent: one or more copies of the script
-are started up when the server initializes, and stay around until
-the server exits or they die a natural death. After performing
-whatever one-time initialization it needs, the script enters a
-loop waiting for incoming connections, processing the request, and
-waiting some more.
-
-A typical FastCGI script will look like this:
-
- #!/usr/local/bin/perl # must be a FastCGI version of perl!
- use CGI::Fast;
- &do_some_initialization();
- while ($q = new CGI::Fast) {
- &process_request($q);
- }
-
-Each time there's a new request, CGI::Fast returns a
-CGI object to your loop. The rest of the time your script
-waits in the call to new(). When the server requests that
-your script be terminated, new() will return undef. You can
-of course exit earlier if you choose. A new version of the
-script will be respawned to take its place (this may be
-necessary in order to avoid Perl memory leaks in long-running
-scripts).
-
-CGI.pm's default CGI object mode also works. Just modify the loop
-this way:
-
- while (new CGI::Fast) {
- &process_request;
- }
-
-Calls to header(), start_form(), etc. will all operate on the
-current request.
-
-=head1 INSTALLING FASTCGI SCRIPTS
-
-See the FastCGI developer's kit documentation for full details. On
-the Apache server, the following line must be added to srm.conf:
-
- AddType application/x-httpd-fcgi .fcgi
-
-FastCGI scripts must end in the extension .fcgi. For each script you
-install, you must add something like the following to srm.conf:
-
- AppClass /usr/etc/httpd/fcgi-bin/file_upload.fcgi -processes 2
-
-This instructs Apache to launch two copies of file_upload.fcgi at
-startup time.
-
-=head1 USING FASTCGI SCRIPTS AS CGI SCRIPTS
-
-Any script that works correctly as a FastCGI script will also work
-correctly when installed as a vanilla CGI script. However it will
-not see any performance benefit.
-
-=head1 CAVEATS
-
-I haven't tested this very much.
-
-=head1 AUTHOR INFORMATION
-
-Copyright 1996-1998, Lincoln D. Stein. All rights reserved.
-
-This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-Address bug reports and comments to: lstein@cshl.org
-
-=head1 BUGS
-
-This section intentionally left blank.
-
-=head1 SEE ALSO
-
-L<CGI::Carp>, L<CGI>
-
-=cut
diff --git a/contrib/perl5/lib/CGI/Pretty.pm b/contrib/perl5/lib/CGI/Pretty.pm
deleted file mode 100644
index 4f2eed4..0000000
--- a/contrib/perl5/lib/CGI/Pretty.pm
+++ /dev/null
@@ -1,236 +0,0 @@
-package CGI::Pretty;
-
-# See the bottom of this file for the POD documentation. Search for the
-# string '=head'.
-
-# You can run this file through either pod2man or pod2html to produce pretty
-# documentation in manual or html file format (these utilities are part of the
-# Perl 5 distribution).
-
-use strict;
-use CGI ();
-
-$CGI::Pretty::VERSION = '1.03';
-$CGI::DefaultClass = __PACKAGE__;
-$CGI::Pretty::AutoloadClass = 'CGI';
-@CGI::Pretty::ISA = qw( CGI );
-
-initialize_globals();
-
-sub _prettyPrint {
- my $input = shift;
-
- foreach my $i ( @CGI::Pretty::AS_IS ) {
- if ( $$input =~ /<\/$i>/si ) {
- my ( $a, $b, $c, $d, $e ) = $$input =~ /(.*)<$i(\s?)(.*?)>(.*?)<\/$i>(.*)/si;
- _prettyPrint( \$a );
- _prettyPrint( \$e );
-
- $$input = "$a<$i$b$c>$d</$i>$e";
- return;
- }
- }
- $$input =~ s/$CGI::Pretty::LINEBREAK/$CGI::Pretty::LINEBREAK$CGI::Pretty::INDENT/g;
-}
-
-sub comment {
- my($self,@p) = CGI::self_or_CGI(@_);
-
- my $s = "@p";
- $s =~ s/$CGI::Pretty::LINEBREAK/$CGI::Pretty::LINEBREAK$CGI::Pretty::INDENT/g;
-
- return $self->SUPER::comment( "$CGI::Pretty::LINEBREAK$CGI::Pretty::INDENT$s$CGI::Pretty::LINEBREAK" ) . $CGI::Pretty::LINEBREAK;
-}
-
-sub _make_tag_func {
- my ($self,$tagname) = @_;
- return $self->SUPER::_make_tag_func($tagname) if $tagname=~/^(start|end)_/;
-
- # As Lincoln as noted, the last else clause is VERY hairy, and it
- # took me a while to figure out what I was trying to do.
- # What it does is look for tags that shouldn't be indented (e.g. PRE)
- # and makes sure that when we nest tags, those tags don't get
- # indented.
- # For an example, try print td( pre( "hello\nworld" ) );
- # If we didn't care about stuff like that, the code would be
- # MUCH simpler. BTW: I won't claim to be a regular expression
- # guru, so if anybody wants to contribute something that would
- # be quicker, easier to read, etc, I would be more than
- # willing to put it in - Brian
-
- return qq{
- sub $tagname {
- # handle various cases in which we're called
- # most of this bizarre stuff is to avoid -w errors
- shift if \$_[0] &&
- (!ref(\$_[0]) && \$_[0] eq \$CGI::DefaultClass) ||
- (ref(\$_[0]) &&
- (substr(ref(\$_[0]),0,3) eq 'CGI' ||
- UNIVERSAL::isa(\$_[0],'CGI')));
-
- my(\$attr) = '';
- if (ref(\$_[0]) && ref(\$_[0]) eq 'HASH') {
- my(\@attr) = make_attributes('',shift);
- \$attr = " \@attr" if \@attr;
- }
-
- my(\$tag,\$untag) = ("\U<$tagname\E\$attr>","\U</$tagname>\E");
- return \$tag unless \@_;
-
- my \@result;
- my \$NON_PRETTIFY_ENDTAGS = join "", map { "</\$_>" } \@CGI::Pretty::AS_IS;
-
- if ( \$NON_PRETTIFY_ENDTAGS =~ /\$untag/ ) {
- \@result = map { "\$tag\$_\$untag\$CGI::Pretty::LINEBREAK" }
- (ref(\$_[0]) eq 'ARRAY') ? \@{\$_[0]} : "\@_";
- }
- else {
- \@result = map {
- chomp;
- if ( \$_ !~ /<\\// ) {
- s/\$CGI::Pretty::LINEBREAK/\$CGI::Pretty::LINEBREAK\$CGI::Pretty::INDENT/g;
- }
- else {
- my \$tmp = \$_;
- CGI::Pretty::_prettyPrint( \\\$tmp );
- \$_ = \$tmp;
- }
- "\$tag\$CGI::Pretty::LINEBREAK\$CGI::Pretty::INDENT\$_\$CGI::Pretty::LINEBREAK\$untag\$CGI::Pretty::LINEBREAK" }
- (ref(\$_[0]) eq 'ARRAY') ? \@{\$_[0]} : "\@_";
- }
- local \$" = "";
- return "\@result";
- }
- };
-}
-
-sub start_html {
- return CGI::start_html( @_ ) . $CGI::Pretty::LINEBREAK;
-}
-
-sub end_html {
- return CGI::end_html( @_ ) . $CGI::Pretty::LINEBREAK;
-}
-
-sub new {
- my $class = shift;
- my $this = $class->SUPER::new( @_ );
-
- Apache->request->register_cleanup(\&CGI::Pretty::_reset_globals) if ($CGI::MOD_PERL);
- $class->_reset_globals if $CGI::PERLEX;
-
- return bless $this, $class;
-}
-
-sub initialize_globals {
- # This is the string used for indentation of tags
- $CGI::Pretty::INDENT = "\t";
-
- # This is the string used for seperation between tags
- $CGI::Pretty::LINEBREAK = "\n";
-
- # These tags are not prettify'd.
- @CGI::Pretty::AS_IS = qw( A PRE CODE SCRIPT TEXTAREA );
-
- 1;
-}
-sub _reset_globals { initialize_globals(); }
-
-1;
-
-=head1 NAME
-
-CGI::Pretty - module to produce nicely formatted HTML code
-
-=head1 SYNOPSIS
-
- use CGI::Pretty qw( :html3 );
-
- # Print a table with a single data element
- print table( TR( td( "foo" ) ) );
-
-=head1 DESCRIPTION
-
-CGI::Pretty is a module that derives from CGI. It's sole function is to
-allow users of CGI to output nicely formatted HTML code.
-
-When using the CGI module, the following code:
- print table( TR( td( "foo" ) ) );
-
-produces the following output:
- <TABLE><TR><TD>foo</TD></TR></TABLE>
-
-If a user were to create a table consisting of many rows and many columns,
-the resultant HTML code would be quite difficult to read since it has no
-carriage returns or indentation.
-
-CGI::Pretty fixes this problem. What it does is add a carriage
-return and indentation to the HTML code so that one can easily read
-it.
-
- print table( TR( td( "foo" ) ) );
-
-now produces the following output:
- <TABLE>
- <TR>
- <TD>
- foo
- </TD>
- </TR>
- </TABLE>
-
-
-=head2 Tags that won't be formatted
-
-The <A> and <PRE> tags are not formatted. If these tags were formatted, the
-user would see the extra indentation on the web browser causing the page to
-look different than what would be expected. If you wish to add more tags to
-the list of tags that are not to be touched, push them onto the C<@AS_IS> array:
-
- push @CGI::Pretty::AS_IS,qw(CODE XMP);
-
-=head2 Customizing the Indenting
-
-If you wish to have your own personal style of indenting, you can change the
-C<$INDENT> variable:
-
- $CGI::Pretty::INDENT = "\t\t";
-
-would cause the indents to be two tabs.
-
-Similarly, if you wish to have more space between lines, you may change the
-C<$LINEBREAK> variable:
-
- $CGI::Pretty::LINEBREAK = "\n\n";
-
-would create two carriage returns between lines.
-
-If you decide you want to use the regular CGI indenting, you can easily do
-the following:
-
- $CGI::Pretty::INDENT = $CGI::Pretty::LINEBREAK = "";
-
-=head1 BUGS
-
-This section intentionally left blank.
-
-=head1 AUTHOR
-
-Brian Paulsen <Brian@ThePaulsens.com>, with minor modifications by
-Lincoln Stein <lstein@cshl.org> for incorporation into the CGI.pm
-distribution.
-
-Copyright 1999, Brian Paulsen. All rights reserved.
-
-This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-Bug reports and comments to Brian@ThePaulsens.com. You can also write
-to lstein@cshl.org, but this code looks pretty hairy to me and I'm not
-sure I understand it!
-
-=head1 SEE ALSO
-
-L<CGI>
-
-=cut
diff --git a/contrib/perl5/lib/CGI/Push.pm b/contrib/perl5/lib/CGI/Push.pm
deleted file mode 100644
index 80683a2..0000000
--- a/contrib/perl5/lib/CGI/Push.pm
+++ /dev/null
@@ -1,307 +0,0 @@
-package CGI::Push;
-
-# See the bottom of this file for the POD documentation. Search for the
-# string '=head'.
-
-# You can run this file through either pod2man or pod2html to produce pretty
-# documentation in manual or html file format (these utilities are part of the
-# Perl 5 distribution).
-
-# Copyright 1995,1996, Lincoln D. Stein. All rights reserved.
-# It may be used and modified freely, but I do request that this copyright
-# notice remain attached to the file. You may modify this module as you
-# wish, but if you redistribute a modified version, please attach a note
-# listing the modifications you have made.
-
-# The most recent version and complete docs are available at:
-# http://stein.cshl.org/WWW/software/CGI/
-
-$CGI::Push::VERSION='1.01';
-use CGI;
-@ISA = ('CGI');
-
-$CGI::DefaultClass = 'CGI::Push';
-$CGI::Push::AutoloadClass = 'CGI';
-
-# add do_push() and push_delay() to exported tags
-push(@{$CGI::EXPORT_TAGS{':standard'}},'do_push','push_delay');
-
-sub do_push {
- my ($self,@p) = CGI::self_or_default(@_);
-
- # unbuffer output
- $| = 1;
- srand;
- my ($random) = sprintf("%16.0f",rand()*1E16);
- my ($boundary) = "----------------------------------$random";
-
- my (@header);
- my ($type,$callback,$delay,$last_page,$cookie,$target,$expires,@other) =
- $self->rearrange([TYPE,NEXT_PAGE,DELAY,LAST_PAGE,[COOKIE,COOKIES],TARGET,EXPIRES],@p);
- $type = 'text/html' unless $type;
- $callback = \&simple_counter unless $callback && ref($callback) eq 'CODE';
- $delay = 1 unless defined($delay);
- $self->push_delay($delay);
-
- my(@o);
- foreach (@other) { push(@o,split("=")); }
- push(@o,'-Target'=>$target) if defined($target);
- push(@o,'-Cookie'=>$cookie) if defined($cookie);
- push(@o,'-Type'=>"multipart/x-mixed-replace; boundary=$boundary");
- push(@o,'-Server'=>"CGI.pm Push Module");
- push(@o,'-Status'=>'200 OK');
- push(@o,'-nph'=>1);
- print $self->header(@o);
- print "${boundary}$CGI::CRLF";
-
- # now we enter a little loop
- my @contents;
- while (1) {
- last unless (@contents = &$callback($self,++$COUNTER)) && defined($contents[0]);
- print "Content-type: ${type}$CGI::CRLF$CGI::CRLF"
- unless $type eq 'dynamic';
- print @contents,"$CGI::CRLF";
- print "${boundary}$CGI::CRLF";
- do_sleep($self->push_delay()) if $self->push_delay();
- }
-
- # Optional last page
- if ($last_page && ref($last_page) eq 'CODE') {
- print "Content-type: ${type}$CGI::CRLF$CGI::CRLF" unless $type =~ /^dynamic|heterogeneous$/i;
- print &$last_page($self,$COUNTER),"$CGI::CRLF${boundary}$CGI::CRLF";
- }
-}
-
-sub simple_counter {
- my ($self,$count) = @_;
- return (
- CGI->start_html("CGI::Push Default Counter"),
- CGI->h1("CGI::Push Default Counter"),
- "This page has been updated ",CGI->strong($count)," times.",
- CGI->hr(),
- CGI->a({'-href'=>'http://www.genome.wi.mit.edu/ftp/pub/software/WWW/cgi_docs.html'},'CGI.pm home page'),
- CGI->end_html
- );
-}
-
-sub do_sleep {
- my $delay = shift;
- if ( ($delay >= 1) && ($delay!~/\./) ){
- sleep($delay);
- } else {
- select(undef,undef,undef,$delay);
- }
-}
-
-sub push_delay {
- my ($self,$delay) = CGI::self_or_default(@_);
- return defined($delay) ? $self->{'.delay'} =
- $delay : $self->{'.delay'};
-}
-
-1;
-
-=head1 NAME
-
-CGI::Push - Simple Interface to Server Push
-
-=head1 SYNOPSIS
-
- use CGI::Push qw(:standard);
-
- do_push(-next_page=>\&next_page,
- -last_page=>\&last_page,
- -delay=>0.5);
-
- sub next_page {
- my($q,$counter) = @_;
- return undef if $counter >= 10;
- return start_html('Test'),
- h1('Visible'),"\n",
- "This page has been called ", strong($counter)," times",
- end_html();
- }
-
- sub last_page {
- my($q,$counter) = @_;
- return start_html('Done'),
- h1('Finished'),
- strong($counter),' iterations.',
- end_html;
- }
-
-=head1 DESCRIPTION
-
-CGI::Push is a subclass of the CGI object created by CGI.pm. It is
-specialized for server push operations, which allow you to create
-animated pages whose content changes at regular intervals.
-
-You provide CGI::Push with a pointer to a subroutine that will draw
-one page. Every time your subroutine is called, it generates a new
-page. The contents of the page will be transmitted to the browser
-in such a way that it will replace what was there beforehand. The
-technique will work with HTML pages as well as with graphics files,
-allowing you to create animated GIFs.
-
-=head1 USING CGI::Push
-
-CGI::Push adds one new method to the standard CGI suite, do_push().
-When you call this method, you pass it a reference to a subroutine
-that is responsible for drawing each new page, an interval delay, and
-an optional subroutine for drawing the last page. Other optional
-parameters include most of those recognized by the CGI header()
-method.
-
-You may call do_push() in the object oriented manner or not, as you
-prefer:
-
- use CGI::Push;
- $q = new CGI::Push;
- $q->do_push(-next_page=>\&draw_a_page);
-
- -or-
-
- use CGI::Push qw(:standard);
- do_push(-next_page=>\&draw_a_page);
-
-Parameters are as follows:
-
-=over 4
-
-=item -next_page
-
- do_push(-next_page=>\&my_draw_routine);
-
-This required parameter points to a reference to a subroutine responsible for
-drawing each new page. The subroutine should expect two parameters
-consisting of the CGI object and a counter indicating the number
-of times the subroutine has been called. It should return the
-contents of the page as an B<array> of one or more items to print.
-It can return a false value (or an empty array) in order to abort the
-redrawing loop and print out the final page (if any)
-
- sub my_draw_routine {
- my($q,$counter) = @_;
- return undef if $counter > 100;
- return start_html('testing'),
- h1('testing'),
- "This page called $counter times";
- }
-
-You are of course free to refer to create and use global variables
-within your draw routine in order to achieve special effects.
-
-=item -last_page
-
-This optional parameter points to a reference to the subroutine
-responsible for drawing the last page of the series. It is called
-after the -next_page routine returns a false value. The subroutine
-itself should have exactly the same calling conventions as the
--next_page routine.
-
-=item -type
-
-This optional parameter indicates the content type of each page. It
-defaults to "text/html". Normally the module assumes that each page
-is of a homogenous MIME type. However if you provide either of the
-magic values "heterogeneous" or "dynamic" (the latter provided for the
-convenience of those who hate long parameter names), you can specify
-the MIME type -- and other header fields -- on a per-page basis. See
-"heterogeneous pages" for more details.
-
-=item -delay
-
-This indicates the delay, in seconds, between frames. Smaller delays
-refresh the page faster. Fractional values are allowed.
-
-B<If not specified, -delay will default to 1 second>
-
-=item -cookie, -target, -expires
-
-These have the same meaning as the like-named parameters in
-CGI::header().
-
-=back
-
-=head2 Heterogeneous Pages
-
-Ordinarily all pages displayed by CGI::Push share a common MIME type.
-However by providing a value of "heterogeneous" or "dynamic" in the
-do_push() -type parameter, you can specify the MIME type of each page
-on a case-by-case basis.
-
-If you use this option, you will be responsible for producing the
-HTTP header for each page. Simply modify your draw routine to
-look like this:
-
- sub my_draw_routine {
- my($q,$counter) = @_;
- return header('text/html'), # note we're producing the header here
- start_html('testing'),
- h1('testing'),
- "This page called $counter times";
- }
-
-You can add any header fields that you like, but some (cookies and
-status fields included) may not be interpreted by the browser. One
-interesting effect is to display a series of pages, then, after the
-last page, to redirect the browser to a new URL. Because redirect()
-does b<not> work, the easiest way is with a -refresh header field,
-as shown below:
-
- sub my_draw_routine {
- my($q,$counter) = @_;
- return undef if $counter > 10;
- return header('text/html'), # note we're producing the header here
- start_html('testing'),
- h1('testing'),
- "This page called $counter times";
- }
-
- sub my_last_page {
- header(-refresh=>'5; URL=http://somewhere.else/finished.html',
- -type=>'text/html'),
- start_html('Moved'),
- h1('This is the last page'),
- 'Goodbye!'
- hr,
- end_html;
- }
-
-=head2 Changing the Page Delay on the Fly
-
-If you would like to control the delay between pages on a page-by-page
-basis, call push_delay() from within your draw routine. push_delay()
-takes a single numeric argument representing the number of seconds you
-wish to delay after the current page is displayed and before
-displaying the next one. The delay may be fractional. Without
-parameters, push_delay() just returns the current delay.
-
-=head1 INSTALLING CGI::Push SCRIPTS
-
-Server push scripts B<must> be installed as no-parsed-header (NPH)
-scripts in order to work correctly. On Unix systems, this is most
-often accomplished by prefixing the script's name with "nph-".
-Recognition of NPH scripts happens automatically with WebSTAR and
-Microsoft IIS. Users of other servers should see their documentation
-for help.
-
-=head1 AUTHOR INFORMATION
-
-Copyright 1995-1998, Lincoln D. Stein. All rights reserved.
-
-This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-Address bug reports and comments to: lstein@cshl.org
-
-=head1 BUGS
-
-This section intentionally left blank.
-
-=head1 SEE ALSO
-
-L<CGI::Carp>, L<CGI>
-
-=cut
-
diff --git a/contrib/perl5/lib/CGI/Switch.pm b/contrib/perl5/lib/CGI/Switch.pm
deleted file mode 100644
index b16b9c0..0000000
--- a/contrib/perl5/lib/CGI/Switch.pm
+++ /dev/null
@@ -1,24 +0,0 @@
-use CGI;
-1;
-
-__END__
-
-=head1 NAME
-
-CGI::Switch - Backward compatibility module for defunct CGI::Switch
-
-=head1 SYNOPSIS
-
-Do not use this module. It is deprecated.
-
-=head1 ABSTRACT
-
-=head1 DESCRIPTION
-
-=head1 AUTHOR INFORMATION
-
-=head1 BUGS
-
-=head1 SEE ALSO
-
-=cut
OpenPOWER on IntegriCloud