I think it's a bug too, but the first call to header just drops all arguments -
passing a CGI object is irrelevant (to header,
!1 was talking about new). Here's sub header() from
CGI::Session v3.95
sub header {
my $self = shift;
my $cgi = $self->{_SESSION_OBJ};
unless ( defined $cgi ) {
require CGI;
$self->{_SESSION_OBJ} = CGI->new();
return $self->header();
}
my $cookie = $cgi->cookie($self->name(), $self->id() );
return $cgi->header(
-type => 'text/html',
-cookie => $cookie,
@_
);
}
The first call to CGI::Session::header instantiates a CGI object ($self->{_SESSION_OBJ}), then calls $self->header() without any of the parameters originally passed. The second call, the CGI object already exists and sub header handles all the arguments.
Here's a minimal patch for CGI::Session (untested)
1222c1222
< return $self->header();
---
> $cgi = $self->{_SESSION_OBJ};
A workaround for the OP would be to call it twice - ie
# call header to instantiate CGI object, but throw away the result
$sess->header();
# _now_ print the header
print $sess->header(expires => '+1M');
__END__
output:
Set-Cookie: CGISESSID=e438a0cb3647f362bd9934d048dca443; path=/
Expires: Mon, 18 Oct 2004 21:52:43 GMT
Date: Mon, 18 Oct 2004 21:42:43 GMT
Content-Type: text/html; charset=ISO-8859-1
Update: modified the patch
Update 2: went to rt.cpan.org, and !1's patch is almost the same...
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.