X-Asg-Orig-Subj: | In scalar context HTML::Widget::Result::param returns the first element of a parameter arrayref instead of the arrayref itself. |
X-Barracuda-Connect: | unknown[192.168.200.14] |
MIME-Version: | 1.0 |
X-Spam-Status: | No, hits=-2.6 required=8.0 tests=BAYES_00,DK_POLICY_SIGNSOME |
X-Barracuda-Virus-Scanned: | by Barracuda Spam Firewall at mechanicnet.com |
X-Asg-Whitelist: | Sender |
Received-SPF: | pass (x1.develooper.com: local policy) |
content-type: | text/plain; charset="utf-8"; format="flowed" |
Reply-To: | jshields-subscriptions [...] mechanicnet.com |
X-Asg-Debug-Id: | 1174071408-15d600230000-0HzuJ8 |
X-Barracuda-Start-Time: | 1174071408 |
Organization: | MechanicNet Group, Inc. |
Received: | from la.mx.develooper.com (x1.develooper.com [63.251.223.170]) by diesel.bestpractical.com (Postfix) with SMTP id A13644D82EF for <bug-HTML-Widget [...] rt.cpan.org>; Fri, 16 Mar 2007 19:27:59 -0400 (EDT) |
Received: | (qmail 31022 invoked by alias); 16 Mar 2007 23:27:58 -0000 |
Received: | from mail.mechanicnet.com (HELO barracuda.mechanicnet.com) (64.124.80.242) by la.mx.develooper.com (qpsmtpd/0.28) with ESMTP; Fri, 16 Mar 2007 16:27:47 -0700 |
Received: | from mechanicnet.com (unknown [192.168.200.14]) by barracuda.mechanicnet.com (Spam Firewall) with ESMTP id 76CDE3B2E3 for <bug-HTML-Widget [...] rt.cpan.org>; Fri, 16 Mar 2007 11:56:48 -0700 (PDT) |
Received: | from [127.0.0.1] [71.133.106.136] by mechanicnet.com with ESMTP (SMTPD32-8.12) id A88C8280078; Fri, 16 Mar 2007 10:57:16 -0800 |
Delivered-To: | cpan-bug+html-widget [...] diesel.bestpractical.com |
Subject: | In scalar context HTML::Widget::Result::param returns the first element of a parameter arrayref instead of the arrayref itself. |
User-Agent: | Thunderbird 1.5.0.10 (Windows/20070221) |
Return-Path: | <jshields [...] mechanicnet.com> |
X-Original-To: | bug-HTML-Widget [...] rt.cpan.org |
X-Spam-Check-BY: | la.mx.develooper.com |
Date: | Fri, 16 Mar 2007 11:56:39 -0700 |
X-Barracuda-Url: | http://192.168.200.19:8000/cgi-bin/mark.cgi |
Message-Id: | <45FAE867.1050709 [...] mechanicnet.com> |
To: | bug-HTML-Widget [...] rt.cpan.org |
Content-Transfer-Encoding: | 7bit |
From: | John Shields <jshields [...] mechanicnet.com> |
X-RT-Original-Encoding: | ISO-8859-1 |
Content-Length: | 1336 |
In the method from HTML::Widget::Result below the documentation clearly
states that calling the "param" method in scalar context for a
multi-valued parameter will return an arrayref to the values. Currently
the code returns the first value, not the arrayref itself. The fix is to
change line 389 from:
: $self->{_params}->{$param}->[0];
to
: $self->{_params}->{$param};
Of course, this can be worked around by always using list context...
Regards,
John
=head2 param
Arguments: $name
Return Value (scalar context): $value or \@values
Return Value (list context): @values
Returns valid parameters with a CGI.pm-compatible param method. (read-only)
=cut
sub param {
my $self = shift;
if ( @_ == 1 ) {
my $param = shift;
my $valid = $self->valid($param);
if ( !$valid || ( !exists $self->{_params}->{$param} ) ) {
return wantarray ? () : undef;
}
if ( ref $self->{_params}->{$param} eq 'ARRAY' ) {
return (wantarray)
? @{ $self->{_params}->{$param} }
: $self->{_params}->{$param}->[0];
}
else {
return (wantarray)
? ( $self->{_params}->{$param} )
: $self->{_params}->{$param};
}
}
return $self->valid;
}