
CGI::Apache2::Wrapper::Cookie - cookies via libapreq2

use CGI::Apache2::Wrapper::Cookie;
sub handler {
my $r = shift;
# create a new Cookie and add it to the headers
my $cookie = CGI::Apache2::Wrapper::Cookie->new($r,
-name=>'ID',
-value=>123456);
$cookie->bake();
# fetch existing cookies
my %cookies = CGI::Apache2::Wrapper::Cookie->fetch($r);
my $id = $cookies{'ID'}->value;
return Apache2::Const::OK;
}

This module provides a wrapper around Apache2::Cookie. Some methods are overridden in order to provide a CGI::Cookie-compatible interface.
Cookies are created with the new method:
my $c = CGI::Apache2::Wrapper::Cookie->new($r,
-name => 'foo',
-value => 'bar',
-expires => '+3M',
-domain => '.capricorn.com',
-path => '/cgi-bin/database',
-secure => 1
);
with a mandatory first argument of the Apache2::RequestRec object $r. The remaining arguments are
This is the name of the cookie (required)
This is the value associated with the cookie (required)
This 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 for details.
This 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.
This 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.
If set to a true value, this instructs the browser to return the cookie only when a cryptographic protocol is in use.
After creation, cookies can be sent to the browser in the appropriate header by $c->bake();.
Existing cookies can be fetched with %cookies = CGI::Apache2::Wrapper::Cookie->fetch($r);, which requires a mandatory argument of the Apache2::RequestRec object $r. In a scalar context, this returns a hash reference. The keys of the hash are the values of the name of the Cookie, while the values are the corresponding CGI::Apache2::Wrapper::Cookie object.

Available methods are
my $c = CGI::Apache2::Wrapper::Cookie->new($r, %args);
This creates a new cookie. Mandatory arguments are the Apache2::RequestRec object $r, as well as the name and value specified in %args.
my $name = $c->name();
This gets the cookie name.
my $value = $c->value();
This gets the cookie value.
my $domain = $c->domain();
my $new_domain = $c->domain('.pie-shop.com');
This gets or sets the domain of the cookie.
my $path = $c->path();
my $new_path = $c->path('/basket/');
This gets or sets the path of the cookie.
my $secure = $c->secure(); my $new_secure_setting = $c->secure(1);
This gets or sets the security setting of the cookie.
$c->expires('+3M');
This sets the expires setting of the cookie. In the current behaviour of Apache2::Cookie, this requires a mandatory setting, and doesn't return anything.
$c->bake();
This will send the cookie to the browser by adding the stringified version of the cookie to the Set-Cookie field of the HTTP header.
%cookies = CGI::Apache2::Wrapper::Cookie->fetch($r);
This fetches existing cookies, and requires a mandatory argument of the Apache2::RequestRec object $r. In a scalar context, this returns a hash reference. The keys of the hash are the values of the name of the Cookie, while the values are the corresponding CGI::Apache2::Wrapper::Cookie object.

CGI, CGI::Cookie, Apache2::Cookie, and CGI::Apache2::Wrapper.
Development of this package takes place at http://cpan-search.svn.sourceforge.net/viewvc/cpan-search/CGI-Apache2-Wrapper/.

You can find documentation for this module with the perldoc command:
perldoc CGI::Apache2::Wrapper::Cookie
You can also look for information at:
http://rt.cpan.org/NoAuth/Bugs.html?Dist=CGI-Apache2-Wrapper

If the USE_CGI_PM environment variable is set, the new method will return a CGI::Cookie object, while fetch will return the corresponding cookies using CGI::Cookie.

This software is copyright 2007 by Randy Kobes <r.kobes@uwinnipeg.ca>. Use and redistribution are under the same terms as Perl itself; see http://www.perl.com/pub/a/language/misc/Artistic.html.