/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
Problem med querystrings i Perl
Fra : Michael Lykke


Dato : 23-09-04 12:36

Hej

Nu er jeg ved at gå helt i selvsving så jeg håber på hurtig hjælp fra jer :)

Jeg sidder og er ved at lavet et lille testscript som skal kunne tage en
enkelt variabel/parameter i en querystring ala følgende:

test.pl?config=MinConfig

Jeg fik lavet et script som på en enkelt linie kunne hive denne parameter ud
og gemme den i en variabel. Men så slettede jeg linien for at prøve nogle
andre ting og nu kan jeg, efter flere timers søgen, ikke finde den simple
løsning igen.

Alle eksempler jeg kan finde på nettet går enten ud på at hente hele
querystring via ENV og derefter splitte den op osv. Eller bruge andres kode
og jeg er ikke interesseret i at bruge 5-10 liniers kode bare for at hente
en bestemt variabel.

Kan nogen hjælpe med dette? Jeg mener det må da være muligt når det har
virket, plus at fx. i ASP bruger man bare Request.Querystring("Variabel
navn") og det samme gør sig gældene for PHP, ASP.NET og lign. Hvordan gør
man det samme med Perl?

Jeg har også fundet et eksempel på nettet hvor man gør noget i stil med
dette:

$variabel = $cgi->param('parameternavn'); - Men dette virker ikke.

Jeg bruger den nyeste Activestate perl til Windows.

Mvh
Michael



 
 
Christian (23-09-2004)
Kommentar
Fra : Christian


Dato : 23-09-04 13:08

On Thu, 23 Sep 2004 13:36:14 +0200, "Michael Lykke"
<michael@adactive.dk> wrote:

>$variabel = $cgi->param('parameternavn'); - Men dette virker ikke.

use CGI;

perldoc

hth


Michael Lykke (23-09-2004)
Kommentar
Fra : Michael Lykke


Dato : 23-09-04 13:31

Hej Christian

Dit svar var næsten lige så kryptisk for mig som Perl programmering :)

Her er mit script:

#!/usr/bin/perl
print "Content-type: text/html\n";
print "\n";
print "Config value er: ";
$confi = $cgi->param('config');
print "$confi";

Og jeg køre scriptet i browseren ved at skrive følgende:

hostnavn/cgi-bin/test.pl?config=MitInput

Det giver følgende resultat:

Can't call method "param" on an undefined value at d:\.........\test.pl line
5.

Jeg får denne fejl uanset om jeg har skrevet use CGI; i starten af mit
script eller ej.
Hvad gør jeg galt?

Og den løsning jeg lavede først krævede ikke at jeg skrev andet end noget
meget simpelt i stil med $confi = Noget_jeg_ikke_kan_huske('config');

Nå håber du kan hjælpe mig på vej.

Mvh
Michael



"Christian" <christian@fabel.dk.nospam> wrote in message
news:53f5l0l3vd7hgto16d2nmmkllbvkbf0kda@4ax.com...
> On Thu, 23 Sep 2004 13:36:14 +0200, "Michael Lykke"
> <michael@adactive.dk> wrote:
>
> >$variabel = $cgi->param('parameternavn'); - Men dette virker ikke.
>
> use CGI;
>
> perldoc
>
> hth
>



Christian (23-09-2004)
Kommentar
Fra : Christian


Dato : 23-09-04 14:23

On Thu, 23 Sep 2004 14:31:16 +0200, "Michael Lykke"
<michael@adactive.dk> wrote:

>Dit svar var næsten lige så kryptisk for mig som Perl programmering :)

Sådan går det når man har travlt og egentlig ikke har tid til at
svare - så kan det godt gå hen og blive lidt kort.

>
>Her er mit script:
>
>#!/usr/bin/perl

#!/usr/bin/perl -w

use strict;
use CGI;

my $cgi... argh - nemmere at du lige læser
http://www.perldoc.com/perl5.8.0/lib/CGI.html
end at jeg skriver det for dig ;)


Tore Aursand (23-09-2004)
Kommentar
Fra : Tore Aursand


Dato : 23-09-04 14:51

On Thu, 23 Sep 2004 14:31:16 +0200, Michael Lykke wrote:
> Dit svar var næsten lige så kryptisk for mig som Perl programmering :)

<http://learn.perl.org/>
<http://books.perl.org/>

> Her er mit script:
>
> #!/usr/bin/perl
> print "Content-type: text/html\n";
> print "\n";
> print "Config value er: ";
> $confi = $cgi->param('config');
> print "$confi";

Endre dette til:

#!/usr/bin/perl
#
use strict;
use warnings;
use CGI;

## Create the CGI object
my $CGI = CGI->new();

## Fetch CGI parameter(s)
my $cfg = $CGI->param( 'config' );

## Output
print $CGI->header( 'text/html' );
print "Config = $config";


--
Tore Aursand <tore@aursand.no>
"The road to hell is full of good intentions." (Bruce Dickinson)

Kåre Olai Lindbach (23-09-2004)
Kommentar
Fra : Kåre Olai Lindbach


Dato : 23-09-04 15:20

On Thu, 23 Sep 2004 15:50:41 +0200, Tore Aursand <tore@aursand.no>
wrote:

[snip]

> my $cfg = $CGI->param( 'config' );
>
> ## Output
> print $CGI->header( 'text/html' );
> print "Config = $config";

$cfg <-----> $config ??

--
mvh/Regards Kåre Olai Lindbach
(News: Remove '_delete_' and '.invalid')
(HTML-written email from unknown will be discarded)

Tore Aursand (23-09-2004)
Kommentar
Fra : Tore Aursand


Dato : 23-09-04 17:16

On Thu, 23 Sep 2004 16:20:15 +0200, Kåre Olai Lindbach wrote:
>> my $cfg = $CGI->param( 'config' );
>>
>> ## Output
>> print $CGI->header( 'text/html' );
>> print "Config = $config";

> $cfg <-----> $config ??

Doh! :)


--
Tore Aursand <tore@aursand.no>

Adam Sjøgren (23-09-2004)
Kommentar
Fra : Adam Sjøgren


Dato : 23-09-04 14:25

On Thu, 23 Sep 2004 14:31:16 +0200, Michael wrote:

> Jeg får denne fejl uanset om jeg har skrevet use CGI; i starten af
> mit script eller ej. Hvad gør jeg galt?

Du har glemt at læse dokumentationen til CGI-modulet:

,----
| CREATING A NEW QUERY OBJECT (OBJECT-ORIENTED STYLE):
|
| $query = new CGI;
`----

,----
| FETCHING THE VALUE OR VALUES OF A SINGLE NAMED PARAMETER:
|
| @values = $query->param('foo');
|
| -or-
|
| $value = $query->param('foo');
|
| Pass the param() method a single argument to fetch the value of the
| named parameter. If the parameter is multivalued (e.g. from multiple
| selections in a scrolling list), you can ask to receive an array.
| Otherwise the method will return a single value.
|
| If a value is not given in the query string, as in the queries
| "name1=&name2=" or "name1&name2", it will be returned as an empty
| string. This feature is new in 2.63.
|
| If the parameter does not exist at all, then param() will return undef
| in a scalar context, and the empty list in a list context.
`----

Se: <http://search.cpan.org/~lds/CGI.pm-3.05/CGI.pm>

(Eller brug "perldoc CGI" på kommandolinien).


Mvh.

--
"Who ees thees Kählveen?" Adam Sjøgren
asjo@koldfront.dk

Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste