Torbjørn Skrevet 6. desember 2003 Del Skrevet 6. desember 2003 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
Torbjørn Skrevet 6. desember 2003 Forfatter Del Skrevet 6. desember 2003 (endret) "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 6. desember 2003 av Torbjørn Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå