My response about what was in %query was based on the line above

LoginUser($dsn,$sql_username,$sql_password,$sql_user_table,$sql_sessio +n_table,$passhash,$sessionhash,$uvId,$username,$ipaddress);
that i took to be the call to this subroutine.I had counted the args and determined it was even so your "even-sized list expected" message made me wonder, so I searched other posts of yours and found much to my surprise that that the actual calling code seems to be
my ($result, $login_timeout) = LoginUser($query);


A hash, (something starting with a % sign, or used as $something{...}, or $something->{...}) can be thought of a special array with a even number of elements and the odd numbered elements have special magic associated with them. This allows you to assign an list to them like %hash=('a','b'); or often seen as %hash=(a=>'b');. A reference to an @array is seen as a list, and here @_ is an array of the arguments to the call, so %query=@_; qualifies as assigning a list to a hash. but the list needs to have an even number of items in it to properly make the hash work. when use warnings; is in effect you get an warning if a list assignment is made to a hash and the number of items in it is not even, as you now have seen. Warnings do not stop the program tho.

I still stand by my assertion that you do not understand what is in %query, in a similar call
use CGI; my $query=new CGI; test($query); sub test { my (%query)=@_; use Data::Dumper; print Dumper(\%query); }
Dumper shows
$VAR1 = { 'CGI=HASH(0x3f7e24)' => undef };
Which is not what you expected at all is it? Based on seeing that the actual call is
my ($result, $login_timeout) = LoginUser($query);
and that you never use the %query hash i suspect that when you said my (%query) = @_; you really wanted my ($query) = @_; That sets the localized scalar variable $query to the first argument of the call rather than trying to set the hash %query to the entire argument list. It also matches your call better and creates a localized $query variable to use in the LoginUser subroutine based on the arguments to the call rather than using the $query variable set somewhere else.

as i noted warnings do not stop execution and i dont know what you mean by "derails code to determine if already logged in"

as to why "the warn( in my cgi scripts do not print in the error log" i cannot answer, mine do, and a google search has produced no further answers either.

as you see debugging by proxy can be a real pain, even more so for me when you only release code in little pieces, spread across many threads. I understand your frustration, do you understand mine?

I understand debugging old code, both of mine and that from someone else. i stand by my previous statement "You need to step back and look at what is really going on, not what you think is going on."


In reply to Re^5: Sessions Questions by huck
in thread Sessions Questions by tultalk

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.