http://www.perlmonks.org?node_id=660216


in reply to Adding a hash to a CGI param

I believe this will work:
#EARLIER $self->param( 'sql' => \%sql ); #LATER $self->param( 'sql' )->{page_id} = 45;
Where the concept is that the value of the 'sql' param is a hash reference, so you just need to retrieve that and work with it as if it you had done something like my $href= \%sql;
In the line above, it simply deferences the return value of $self->param( 'sql' ) and sets the page_id key to 45.

Replies are listed 'Best First'.
Re^2: Adding a hash to a CGI param
by bradcathey (Prior) on Jan 03, 2008 at 15:44 UTC

    Yes, that worked and I understand the 'concept'. Thanks. I think it might have been the hash reference that was throwing me. I suppose if I were storing an array in the param, I could push.


    —Brad
    "The important work of moving the world forward does not wait to be done by perfect men." George Eliot
      I suppose if I were storing an array in the param, I could push .

      Assuming that what was returned by  $self->param('foo') was an array reference and not a hash ref, you could indeed say:

      push @{ $self->param('foo') }, $element, $anotherelement, $etc;

      And, in general, treat the expression as you would any array ref:

      $self->param('foo')->[$n] = 42;