/ 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
parametre i kald af script
Fra : fix


Dato : 09-06-07 13:26

Det ser godt nok ud til at perl er dødt, ud fra aktiviteten i denne
konference. -jeg prøver alligevel:
(jeg har stort set ikk forstand på perl, så undskyld hvis det er for
simpelt!)

jeg har et script som kaldes direkte for at starte en app:

www.mydom.dk/cgi-bin/startscript?navn=emne1

man får så eksekveret script emne1 resp. de andre emner.
problemet er, at hvis man angiver urlen www.mydom.dk/cgi-bin/startcsript[?]
får man en menu med tilgængelige emner, hvilket jeg ikke ønsker.

Jeg vil derfor gerne allerførst i scriptet have en stump kode, som tester om
der er en parameter ?emne1

hvis ikke så forcere den eller gå i fejl

de første linier i scriptet ser således ud, hvis de kan manipuleres:

$|++;

# Parse the CGI params into a hash
my %params;
my $cgi = new CGI;
foreach my $name ($cgi->param) {
$params{$name} = $cgi->param($name); # watch out! no multi-valued
params!
}



 
 
Adam Sjøgren (09-06-2007)
Kommentar
Fra : Adam Sjøgren


Dato : 09-06-07 14:16

On Sat, 9 Jun 2007 14:26:09 +0200, fix wrote:

> Det ser godt nok ud til at perl er dødt, ud fra aktiviteten i denne
> konference. -jeg prøver alligevel:

Jazz is not dead, it just smells funny.

> jeg har et script som kaldes direkte for at starte en app:

> www.mydom.dk/cgi-bin/startscript?navn=emne1

> man får så eksekveret script emne1 resp. de andre emner.

(Denne forklaring er fuldstændig sort tale for mig...)

> problemet er, at hvis man angiver urlen
> www.mydom.dk/cgi-bin/startcsript[?] får man en menu med tilgængelige
> emner, hvilket jeg ikke ønsker.

> Jeg vil derfor gerne allerførst i scriptet have en stump kode, som
> tester om der er en parameter ?emne1

Var det ikke mere oplagt at ændre den funktion i dit script der laver
menuen?

Så bliver det klarere for den der senere læser scriptet at den funktion
ikke er tilgængelig længere.

> hvis ikke så forcere den eller gå i fejl

Hvad mener du med at 'forcere' her?

> de første linier i scriptet ser således ud, hvis de kan manipuleres:

> $|++;

> # Parse the CGI params into a hash
> my %params;
> my $cgi = new CGI;
> foreach my $name ($cgi->param) {
> $params{$name} = $cgi->param($name); # watch out! no multi-valued
> params!
> }

Hvis du bare vil checke om der er nogle parametre eller ej, kan du sige:

if ($cgi->param) {
# There is at least one parameter
}
else {
# No parameters given
}

En kort måde at afbryde scriptet med en fejl når der ingen parametre
kunne være:

die "No parameters passed" if (!$cgi->param);


Mvh.

Adam


P.S. Hele den løkke du har der bygger %params op kan erstattets med:

my %params=$cgi->Vars;

i følge perldoc CGI.

--
"Money always takes the place of life" Adam Sjøgren
asjo@koldfront.dk

Michael Zedeler (09-06-2007)
Kommentar
Fra : Michael Zedeler


Dato : 09-06-07 15:10

fix wrote:
> [...]
> Jeg vil derfor gerne allerførst i scriptet have en stump kode, som tester om
> der er en parameter ?emne1

die "Ingen emner" unless $cgi->emne;

Mvh. Michael.

Adam Sjøgren (09-06-2007)
Kommentar
Fra : Adam Sjøgren


Dato : 09-06-07 16:17

On Sat, 09 Jun 2007 16:10:18 +0200, Michael wrote:

> fix wrote:
>> [...]
>> Jeg vil derfor gerne allerførst i scriptet have en stump kode, som
>> tester om der er en parameter ?emne1

> die "Ingen emner" unless $cgi->emne;

$ perl -MCGI -e 'my $cgi=new CGI; die "Ingen emner" unless $cgi->emne;'
Undefined subroutine CGI::emne
at -e line 1
$


Mvh.

--
"Money always takes the place of life" Adam Sjøgren
asjo@koldfront.dk

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

Månedens bedste
Årets bedste
Sidste års bedste