CGI.PM and hidden()

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Threaded View

I am trying to replace this

print "<input type=\"hidden\" name=\"page\" value=$page>\n";

with this

print hidden(-name=>"page", -value=>$page);

problem is that the new line does not print the correct value of $page
(its supposed to change every pass through the perl code),  I have
tried enclosing the contents of the hidden() command in "{}" but this
made no difference.  I am not sure what the role of these brackets
are, some syntax shows them present and other forms of the syntax
shows them absent.

appreciate any help


Re: CGI.PM and hidden()

On 04/13/2008 12:12 PM, wrote:
Quoted text here. Click to load it

You should create a small (but complete) script that demonstrates the
problem you're having. For example, see this program:

use strict;
use warnings;
use CGI qw/:standard/;
use File::Slurp;

my $counter = '/tmp/ses/count';
-f $counter || write_file($counter, '0');
my $page = read_file($counter) + 1;
write_file($counter, $page);

print header('text/plain');
print hidden(-name=>"page", -value=>$page);

Re: CGI.PM and hidden()

On 2008-04-13, wrote:
Quoted text here. Click to load it

If there's already a value for a 'page' field, hidden() uses it. The
manual suggests to change the value before calling hidden():

    param("page", $page);
    print hidden(-name=>"page", -value=>$page);

I personally never read the manpage before posting this, so delete the
parameter instead:

    print hidden(-name=>"page", -value=>$page);


Real email address: join('@', 'intercal', '')
It helps the spam filter if you include the word CAMEL in the subject.

Re: CGI.PM and hidden() wrote in

Quoted text here. Click to load it
Quoted text here. Click to load it

Try '-override', like this:

  print hidden(-name=>"page", -value=>$page, -override=>1);


Steve van der Burg
Technical Analyst, Information Services
London Health Sciences Centre
London, Ontario, Canada

Re: CGI.PM and hidden() wrote:
Quoted text here. Click to load it

CGI has "sticky" fields.  The value that was just submitted has priority
over the the value specified by -value.

This is usually a good thing.  If someone's submission is malformed in one
field, and you need to tell them to change it and resubmit, you want
the new page to retain their previous selections rather than forcing them
to start over with the original defaults (although this argument is less
compelling in the case of hidden fields.)

To change this default behavior for an individual field, specify
-override => 1

You can also turn it off globally by using -nosticky when CGI is "use"d.

Quoted text here. Click to load it

CGI offers an absurd amount of flexibility in how parameters are passed
to it's methods/functions.  The list-vs-hash is part of that.  It shouldn't
change the behavior.


-------------------- http://NewsReader.Com/ --------------------
The costs of publication of this article were defrayed in part by the
payment of page charges. This article must therefore be hereby marked
advertisement in accordance with 18 U.S.C. Section 1734 solely to indicate
this fact.

Site Timeline