Gå til innhold

Anbefalte innlegg

akkurat som php eller andre serverprogrammeringsspråk kan også perl brukes her.

 

det er også et av de store anvendelsesområdene for perl

 

Det første problemet man får med perl på web, er at man selv må håndtere headers. dette gjør f.eks php skript automatisk.

 

hvis du kjører et php-skript på kommandolinjen, kommer dette fram. se på følgende skript, test.php:

<?php
print "Hello world\n";
?>

 

gir følgende resultat:

tiger$ php test.php
X-Powered-By: PHP/4.0.6
Content-type: text/html

Hello world

 

Viktig å legge merke til her, er Content-type. Det sto ikke i skriptet, men php skrev det ut likevel.

 

tilsvarende perl script på web, blir slik:

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello world!\n";

 

Ikke den helt store forkjellen.

 

Hvis du ikke har med Content-type, vil du få en "500 Server error" tilbake. Og dem vil du få mange av mens du lærer! ;)

 

for å håndtere skjemainput, bruker vi CGI modulen, slik f.eks:

 

#!/usr/bin/perl

# importerer cgimodulen
use CGI;

# lager et cgi object, dette vil inneholde all data fra <form>'s
$cgi = new CGI;

# http headers kan vi skrive ut med CGImodulen!
print $cgi->header;

# litt html
print "<h2>Perl på web!</h2>\n";

# sjekker om vi har en method=post request (typisk når noen
# har trykket på en knapp på en <form>
if($ENV{'REQUEST_METHOD'} eq "POST"){
 
 # %ENV inneholder server data, omtrent som $_SERVER i php.
 
 print "Noen trykket på en knapp...<br>\n";
 
 # hvis vi har en <input name=navn> så vil inneholdet hentes slik:  
 $navn = $cgi->param('navn');
 
 print "Hei, du skrev $navn i navnefeltet.<br>\n";
 
}

# hvis vi skal ha mye tekst, er dette litt enklere en masse printlinjer.
# den skriver ut alt etter denne linja helt til den finner "EOH", 
# dvs 6 linjer nedenfor. Kan forstås som "skriv ut alt inntil EOH"
# her kan man putte inn hva som helst, "EOH" er bare et eksempel
# (utledet av End Of HTML her, men trenger selvsagt ikke bety noe.)
print <<EOH;

<form method=POST>
Skriv inn et navn her:<br>
<input name=navn><br>
<input type=submit>

EOH
 

 

hvis du kaller fila for etellerannet.cgi, og legger den i /var/www/cgi-bin/ katalogen, skal den kunne kjøres som den står. (hvis du har egen server)

 

fullstendig dokumentasjon for CGI (den er lang!):

http://search.cpan.org/~lds/CGI.pm-3.00/CGI.pm

Lenke til kommentar
Videoannonse
Annonse

"eq" i eksemplet over, brukes for å sammenligne strenger, kommer av engelsk "equals"

 

== brukes for å sammenligne tall.

 

php bruker == for både tall og strenger, hvilket er et (av mange) ankepunkter mot php.

 

se på følgende eksempel:

 

<?php
if("01" == 1){
 print "Var det dette vi ville åpnå?\n";
}
?>

 

I perl er det ingen tvil:

 

#!/usr/bin/perl
if("01" == 1){
 print "Tallet 01 er det samme som tallet 1!\n";
}
if("01" eq 1){
 print "Hit kommer vi aldri\n";
}
else{
 print "strengen \"01\" er forskjellig fra strengen \"1\"\n";
}

 

For referanse:

 

negasjonen til == er !=, akkurat som i php og en drøss andre språk

 

negasjonen til "eq" er "ne" kommer av "not equal"

Endret av Torbjørn
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...