in reply to Problem with CGI::Vars

there were must be problem with CGI function (maybe some limit?).

That is not a conclusion I would jump to without some basic Dumper-ing ala Re^3: Form Data inaccessible after establishing session, Re^5: $cgi->param() values are not updated instantly when read in a subroutine

Replies are listed 'Best First'.
Re^2: Problem with CGI::Vars
by Chipper (Initiate) on Jun 06, 2011 at 09:56 UTC
    If i use chk_idx from 1000 to 2000, then I can read chk_idx by param function only from range 1000 to 1762 :-/ Do somebody have any idea?
      If I use print CGI::Dump(), it also show me: # chk_idx * 2001 * 2002 ... * 2762 # ch but I have no ch variable defined, and in Dump() list, variable ch has no value. I think, this can be same problem connected with max POST_PARAM_SIZE in somewhere in CGI, because if I use Webmin::ReadParse, it parses input params correctly.
        ch but I have no ch variable defined, and

        How do you know that?

        use CGI qw(:standart); print CGI::header(); print CGI::start_html('Debug'); print CGI::Dump()."aaaaaaaaa
        "; exit 1; This CGI script only display 2001-2762 params from range 2001-3000 :-(
        because if I use Webmin::ReadParse, it parses input params correctly.

        Upgrade? View the source? Stick with Webmin::ReadParse?

        I think, I found a BUG in CGI module.... In CGI soucrce code is this function which read only 10000 bytes from 13100 which my browser sends:
        'read_from_client' => <<'END_OF_FUNC', + # Read data from a file handle + sub read_from_client { + my($self, $buff, $len, $offset) = @_; + local $^W=0; # prevent a warning return $MOD_PERL ? $self->r->read($$buff, $len, $offset) : read(\*STDI +N, $$buff, $len, $offset); + } + END_OF_FUNC
        This looks ok, but the function calling looks like, it program some kid:
        if ($meth eq 'POST') { + $self->read_from_client(\$query_string,$content_length,0) + if $content_length > 0; + # Some people want to have their cake and eat it too! + # Uncomment this line to have the contents of the query string + # APPENDED to the POST data. + #$query_string .= (length($query_string) ? '&' : '') . $ENV{'QUE +RY_STRING'} if defined $ENV{'QUERY_STRING'}; + last METHOD; + }
        This only read ONCE! from stdin and does NOT check how many bytes it read!! :-( So my read function on my kvm machine read only 10000 bytes from 13100 and thats all :-/