You're just tripping on your shoelace a little. It's not as bad as it seems.

$params = $CGI->Vars; puts a hash reference in $params. The next line of the CGI.pm POD gives the example of dereferencing an example 'key' contained in the hash. $params->{'address'} is only an example of how easy it is to read a param value after you've loaded it into an anonymous hash. The author could just as easily have said $params->{'example_key'}.

Your line that says %params = $CGI->Vars; is wrong, because you're attempting to assign a hash REFERENCE to an actual named hash, rather than to a scalar (scalars hold references). You could modify that line to this:

%params = %{$CGI->Vars};
That dereferences the anonymous hash and assigns it to a real hash, but it doesn't really gain you anything except perhaps one level less of abstraction. And if you do that, you can no longer say $params->{'address'}. You would have to remove the dereferencing operator (->), as in "$params{'address'}".

You probably should have a look at perlreftut, perllol, and perlref to gain a stronger working knowledge of how references work. Then it should all come together for you.


Dave


In reply to Re: Getting hash of CGI variables by davido
in thread Getting hash of CGI variables by Lori713

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.