Hi Joe,

just hab the same Problems with your Script as with cgi::param,...
Ok, I just played around a little bit, checked some books and came to this solution:

our %values;

sub parse_form {

my ($ENV,$daten,@fields,$name,$value);  
        if ($ENV{'REQUEST_METHOD'} eq 'GET')
                {$daten = $ENV{'QUERY_STRING'}
        }
        else
        {read(STDIN,$daten,$ENV{'CONTENT_LENGTH'});
        }
        
        @fields = split (/&/,$daten);
        foreach (@fields){
                ($name, $value) = split(/=/, $_);
                $values {$name} = $value;
        }
 } # End sub parse_form

Only thing I want to change now is the access to the Values. Seems to be nice like you 
do it, but I still couldn´t follow...
So I have to recall it like print $values{seriennummer};
Working on it... :-)

Greets Johannes

> -----Ursprüngliche Nachricht-----
> Von:  David vd Geer Inhuur tbv IPlib [SMTP:[EMAIL PROTECTED]]
> Gesendet am:  Dienstag, 25. Juni 2002 17:47
> An:   [EMAIL PROTECTED]
> Betreff:      param problem
> 
> 
> Johan,
> 
> Somethings are going wrong here.
> Indeed the "our" should make the var global.
> 
> Looking at your header it's obvious you use : name=value&name2=value2
> 
> When you print $header, you will see that the first "?" is not shown.
> What I did in my script was building my header like this :
> 
> name1=value1?name2=value2? .......
> 
> So what you have got to do right now is :
> 
> @pairs = split(/\&/, $head); # split vars using & as delimitor
> 
> You see, change the question mark into a ampensant(&). Now you will get you scalars
> just like you used to.
> 
> our ${$name} = $value;
> 
> Does nothing else then :
> 
> our $serien = "10/rd30";
> 
> It's just that it does it automated, so you can use : print "Serienumber: $serien";
> To print it. give it a try within the sub-routine and outside. Just to make sure the
> our works.
> 
> 
> Regs David
> > 
> > Our?! Never heard this bevore,... as you probably can think now i´am new to 
>perl,.. :-) 
> > 
> > So I guess our is the opposite to my? My is available only in the routine it is 
>defined in (and the called subroutines) and our is also available for the main script 
>or any other colling part even if it is defined in a subroutine?
> > 
> > Still it´s not clear to me how to access my values,... :-)
> > 
> > If i pass the parameters ?parameter1=value1&parameter2=value2, i have to access 
>the parametervalues like $$parameter1 and $$parameter2 alright?
> > 
> > Johannes
> > 
> > > -----Ursprüngliche Nachricht-----
> > > Von:      David vd Geer Inhuur tbv IPlib [SMTP:[EMAIL PROTECTED]]
> > > Gesendet am:      Dienstag, 25. Juni 2002 17:26
> > > An:       [EMAIL PROTECTED]
> > > Betreff:  Re: AW: AW: AW: AW: param problem
> > > 
> > > 
> > > Make Sure you do the "our ${$name} = $value;"
> > > 
> > > this will make the $name available throught the script.
> > > The rest I would pre-define in the sub-routine :
> > > 
> > > sub parse_form {
> > > 
> > >   my ($buffer, $value, $name, .. ... .);
> > >   ...
> > >   ..
> > >   our ${$name} = $value;
> > > 
> > > }
> > > 
> > > Good Luck.
> > > 
> > > Regs David
> > > ---------------------
> > > > Ok, got some problems using strict but thats OK.one last Thing for today: 
>where do i have to call the sub 
> > > > and how do I access the parameters later in the script?
> > > > 
> > > > greetings Johannes usually one named me Joe to,...
> > > > > -----Urspr> üngliche Nachricht-----
> > > > > Von:  David vd Geer Inhuur tbv IPlib [SMTP:[EMAIL PROTECTED]]
> > > > > Gesendet am:  Dienstag, 25. Juni 2002 17:03
> > > > > An:   [EMAIL PROTECTED]
> > > > > Betreff:      Re: AW: AW: AW: param problem
> > > > > 
> > > > > 
> > > > > Yep, you'dd better do.
> > > > > This is always the first routine I load before I start to do anything.
> > > > > 
> > > > > Regs David
> > > > > > 
> > > > > > OK, I´m going to try it then,...
> > > > > > Just thought one should know what to put in a script,... :-) But aren> ´t 
>we all just Zombies,... :-)
> > > > > > Guess i have to do that in the beginning of the script?
> > > > > > 
> > > > > > Johannes
> > > > > > > -----Ursprüngliche Nachricht-----
> > > > > > > Von:      David vd Geer Inhuur tbv IPlib 
>[SMTP:[EMAIL PROTECTED]]
> > > > > > > Gesendet am:      Dienstag, 25. Juni 2002 16:30
> > > > > > > An:       [EMAIL PROTECTED]; 
>[EMAIL PROTECTED]
> > > > > > > Cc:       [EMAIL PROTECTED]
> > > > > > > Betreff:  Re: AW: AW: param problem
> > > > > > > 
> > > > > > > 
> > > > > > > Hi Johan,
> > > > > > > 
> > > > > > > Let's tell you a secret.
> > > > > > > I don't know what it means as well :)
> > > > > > > Well some part then. This is just typicaly something I always re-use and
> > > > > > > actualy never had the time to re-look at it.
> > > > > > > 
> > > > > > > Don't worry about the length by the way. Just give it a try, it never 
>failed for
> > > > > > > me. And maybe you might become one of the zombies (just like me), that 
>now and
> > > > > > > than just steals code and re-uses it without understanding what it does 
>:)
> > > > > > > 
> > > > > > > Now let's at least give some info :
> > > > > > > 
> > > > > > > my $head = $ENV{QUERY_STRING};  ## Just read 1 of the Enironment vars 
>and put it 
> > > > > > >                              into $head. In this case you request the 
>query string.
> > > > > > >                              You might want to use google.com, look at :
> > > > > > >                              http://hoohoo.ncsa.uiuc.edu/cgi/env.html
> > > > > > >                              
> > > > > > > $value =~ tr/+/ /;
> > > > > > > $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
> > > > > > > 
> > > > > > > Well This is where we have this mailinglist for. Regex is not my best 
>part.
> > > > > > > But as we all have to learn :)
> > > > > > > 
> > > > > > > 
> > > > > > > my ${$name} = $value;
> > > > > > > 
> > > > > > > Just a way of craeting a scalar. We just found out for example : $name = 
>"serie";
> > > > > > >                                                            $value = 10;
> > > > > > > 
> > > > > > > So what we do is : ${serie} = 10;
> > > > > > > or $serie= 10;
> > > > > > > 
> > > > > > > 
> > > > > > > Hhhm, relooking at the length($buffer). Could be taken out from what I 
>can see.
> > > > > > > Don't know what it does out there.> 
> > > > > > > 
> > > > > > > 
> > > > > > > Regs David
> > > > > > > ----------------------------------
> > > > > > > 
> > > > > > > > 
> > > > > > > > Puh thats tought! So i have to go the hard way for it? What a pity!
> > > > > > > > Lets see if i understand the code... Is there any source where I can 
>read about passing parameters to a perl script via the browser?
> > > > > > > > 
> > > > > > > > > One solution, when not using $value = param('value');
> > > > > > > > > 
> > > > > > > > > sub parse_form {
> > > > > > > > > 
> > > > > > > > >   read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
> > > > > > > > > 
> > > > > > > >         [Theuerkorn Johannes]  so i have to give the length of the 
>variable name and value? And what if i don´t know it before?
> > > > > > > > >     if (length($buffer) < 5) {
> > > > > > > > >           $head = $ENV{QUERY_STRING};
> > > > > > > > >      }
> > > > > > > >         [Theuerkorn Johannes]  No, i don´t understand the reading part 
>at all ... :-(
> > > > > > > > 
> > > > > > > > >    @pairs = split(/\?/, $head); # split vars using ? as delimitor
> > > > > > > > >     foreach $pair(@pairs) {
> > > > > > > > >        ($name, $value) = split(/=/, $pair); # split var and value 
>using = as delim.
> > > > > > > > > 
> > > > > > > >         [Theuerkorn Johannes]  Ok, so i got the name and values 
>somehow into the pairs array and now i put it into two variables $name and $value for 
>further use, right? But again i don´t know how the values got into $head...
> > > > > > > > 
> > > > > > > > >        $value =~ tr/+/ /;
> > > > > > > > >        $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;> 
> > > > > > > > > > 
> > > > > > > > > 
> > > > > > > >         > [Theuerkorn Johannes]  Ok, have to learn a lot a> s it 
>seems, i definetely have no clue what happens here,... OK, lets try: in the first 
>line you change every + to a blank, don´t you? And as far as I know from RegExp, in 
>the second line you change EVERYTHING to something. But to what?
> > > > > > > > >     
> > > > > > > > >    ${$name} = $value;
> > > > > > > > >     
> > > > > > > >         [Theuerkorn Johannes]  Hey thats cool, i definetely understand 
>that! ;-)
> > > > > > > > > }
> > > > > > > > >  } # End sub parse_form
> > > > > > > > >  
> > > > > > > > >  
> > > > > > > > >  
> > > > > > > > >  Regs David
> > > > > > > > >  ---------------------
> > > > > > > > >  > From 
>[EMAIL PROTECTED] Tue Jun 25 15:32:57 
>MET 2002
> > > > > > > > > > Mailing-List: contact [EMAIL PROTECTED]; run by ezmlm
> > > > > > > > > > Precedence: bulk
> > > > > > > > > > List-Post: <mailto:[EMAIL PROTECTED]>
> > > > > > > > > > List-Help: <mailto:[EMAIL PROTECTED]>
> > > > > > > > > > List-Unsubscribe: <mailto:[EMAIL PROTECTED]>>  
> > > > > > > > > > List-Subscribe: <mailto:[EMAIL PROTECTED]>
> > > > > > > > > > Delivered-To: mailing list [EMAIL PROTECTED]
> > > > > > > > > > Message-ID: <AEEEEE93AFA5D411AF8500D0B75E4A16058EE1B5@BSL203E>
> > > > > > > > > > To: "'MECKLIN, JOE (ASI)'" <[EMAIL PROTECTED]>
> > > > > > > > > > Cc: [EMAIL PROTECTED]
> > > > > > > > > > Subject: AW: param problem
> > > > > > > > > > Date: Tue, 25 Jun 2002 15:10:05 +0200
> > > > > > > > > > MIME-Version: 1.0
> > > > > > > > > > X-Mailer: Internet Mail Service (5.5.2653.19)
> > > > > > > > > > Content-Type: text/plain;
> > > > > > > > >       charset="ISO-8859-1"
> > > > > > > > > > Content-Transfer-Encoding: quoted-printable
> > > > > > > > > > Content-Length: 1671
> > > > > > > > > > Status: RO
> > > > > > > > > > 
> > > > > > > > > > Thanks, but this doesn´t work either, the problem with the &#43 is 
>that the cgi:param method takes everything after the & sign as the next variable. As 
>the syntax for the param method is: 
>http://server/script.pl?variable1=value&variable2=value...etc
> > > > > > > > > > 
> > > > > > > > > > > -----Ursprüngliche Nachricht-----
> > > > > > > > > > > Von:      MECKLIN, JOE (ASI) [SMTP:[EMAIL PROTECTED]]
> > > > > > > > > > > Gesendet am:      Dienstag, 25. Juni 2002 15:05
> > > > > > > > > > > An:       'Theuerkorn Johannes'
> > > > > > > > > > > Betreff:  RE: param problem> 
> > > > > > > > > > > 
> > > > > > > > > > > In place of the plus sign (+), try sending the html enco> ding 
>&#43
> > > > > > > > > > > The html on the receiving end should translate that to a plus 
>sign.
> > > > > > > > > > > 
> > > > > > > > > > > 
> > > > > > > > > > > 
> > > > > > > > > > > -----Original Message-----
> > > > > > > > > > > From: Theuerkorn Johannes 
>[mailto:[EMAIL PROTECTED]]
> > > > > > > > > > > Sent: Tuesday, June 25, 2002 7:59 AM
> > > > > > > > > > > To: [EMAIL PROTECTED]
> > > > > > > > > > > Subject: cgi:param problem
> > > > > > > > > > > 
> > > > > > > > > > > 
> > > > > > > > > > > Hi there, 
> > > > > > > > > > > 
> > > > > > > > > > > i´ve got to pass a serial number to a perl.cgi. Doing it via the 
>cgi:param
> > > > > > > > > > > funktion seems not to work.
> > > > > > > > > > > 
> > > > > > > > > > > 
> > > > > > > > > > > >use strict;
> > > > > > > > > > > >use CGI;
> > > > > > > > > > > >use DBI;
> > > > > > > > > > > >my $cgi_obj = new CGI;
> > > > > > > > > > > >my $seriennummer = $cgi_obj->param("seriennummer");
> > > > > > > > > > > 
> > > > > > > > > > > Passing http://server/script4.pl?seriennummer=CN+/P4226666
> > > > > > > > > > > 
> > > > > > > > > > > results in a variable seriennummer=CN/P4226666
> > > > > > > > > > > 
> > > > > > > > > > > As i want to use the variable seriennummer for an SQL Query 
>later, this> 
> > > > > > > > > > > doesn´t work.> 
> > > > > > > > > > > 
> > > > > > > > > > > Any possibility passing the + to my cgi Script? (\+ doesn´> t w> 
>ork, either '+'
> > > > > > > > > > > or "+")
> > > > > > > > > > > 
> > > > > > > > > > > Johannes
> > > > > > > > > > > 
> > > > > > > > > > > -- 
> > > > > > > > > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > > > > > > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > > > > > > > > 
> > > > > > > > > > -- 
> > > > > > > > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > > > > > > > For additional commands, e-mail: [EMAIL PROTECTED]> 
> > > > > > > > > > 
> > > > > > > > > > 
> > > > > > 
> > > > 
> > 

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to