salah Skrevet 28. januar 2006 Del Skrevet 28. januar 2006 Heisann. Jeg har fikla litt med Perl, og kom fram til at jeg ville lage en liten "hjemmeside" hvor man kun trykke "Litt om meg" og "Hva er Perl". Meningen da er at jeg ved hjelp av GET metoden skal lage en liten "hjemmeside". Dette er jo da en bitteliten script for å lære meg GET metoden i Perl. Jeg har prøvd litt selv: #!c:/perl/bin/Perl.exe print "Content-type: text/html; charset=iso-8859-1\n\n"; use LWP::Simple; $action = get("http://localhost/cgi-bin/arraytest.py"); print "<a href=\"arraytest.py?action=litt_om_meg\">Litt om meg</a><br />"; print "<a href="arraytest.py?action=hva_er_perl\">Hva er Perl</a><br />"; if ($action == "litt_om_meg") { print "Litt om meg..."; } elsif ($action == "hva_er_perl") { print "Perl er noe"; } else { print "Velkommen til testscriptet"; } Men uten hell. Det eneste jeg får fram er "Litt om meg". Så spørsmålet er; hvordan er GET metoden i Perl? Hvordan tar jeg i bruk det? Lenke til kommentar
trtrtr Skrevet 29. januar 2006 Del Skrevet 29. januar 2006 "GET" metoden eller "get" metoden for å være helt nøyaktig (en fordel, siden perl skiller på store og små bokstaver) som du forsøker å benytte kommer fra modulen LWP::Simple og benyttes til å hente ned web-sider (urls). e.g. use LWP::Simple; my $data = get('http://www.vg.no'); #Dumper ut HTML-kode til skjerm print $data; Testen: if ($action == "litt_om_meg") { .. } vil alltid være sann (dvs kode i løkke kjøres) fordi "==" operator er "numerisk sammenligning", og strings tolkes alltid som sanne. Bruk "eq" operator dersom du vil sammenligne to strenger (dvs tekst). Ellers i scriptet ditt er det ikke helt klart hva du forsøker å gjøre. Du printer ut HTML-kode for to linker. I den ene linken har du href-attributt satt til: "arraytest.py?action=litt_om_meg" Dette betyr at browser vil forsøke å åpne opp dette dokumentet idet link blir trykket på. If-testene nederst i script vil kjøres med en gang og har ingenting med linkene å gjøre. I beskrivelsen av hva du ønsker å gjøre, høres det ut som alt vil gjøre kan gjøres med HTML. Lenke til kommentar
salah Skrevet 29. januar 2006 Forfatter Del Skrevet 29. januar 2006 Ok, men hvorfor står det en url innenfor get()? Betyr det at get metoden kun funker med urlen som er skrevet innenfor get()? Lenke til kommentar
Torbjørn Skrevet 29. januar 2006 Del Skrevet 29. januar 2006 get() fra LWP::Simple brukes for å hente ned innhold fra nettsider... Jeg gjetter at du kun ønsker å sjekke hva som står etter action= i adressefeltet? isåfall skal du bruke CGI modulen! Det er mange måter å bruke den på, f.eks slik: use CGI; my $cgi = new CGI; print $cgi->header; my $action = $cgi->param('action'); # nå har du $action med innhold utfra hva som står i URL [/code] Lenke til kommentar
salah Skrevet 1. februar 2006 Forfatter Del Skrevet 1. februar 2006 Takker for svarene, har fått det hele til nå. Koden jeg skrev var den Torbjørn skrev, samtidig som jeg også fikk lagt til andre variabler, slik at jeg kunne skrive arraytest.pl?action=hello_world&annetvariabel=annetverdi, og slik kunne GET metoden fortsette. Genialt Lenke til kommentar
jpsalvesen Skrevet 27. februar 2006 Del Skrevet 27. februar 2006 Du mangler to essensielle linjer i scriptet ditt: use strict; use warnings; Legg dem nest øverst, under #! - linja. use warnings vil føre til at perl klager når du gjør noe galt - sånn som her, da du har brukt == når du skal bruke eq. Use strict gjør at du MÅ deklarere variablene dine: "my $varname'. Lenke til kommentar
Torbjørn Skrevet 4. mars 2006 Del Skrevet 4. mars 2006 (endret) riktig som jpsalvesen sier, de to linjene skal du alltid ha med. Endret 4. mars 2006 av Torbjørn Lenke til kommentar
Manfred Skrevet 6. mars 2006 Del Skrevet 6. mars 2006 Jeg får også litt angst over at det er en print over en use... Liker det best om alle use er samlet øverst under #! - linja. use strict; use warnings; use .... Lenke til kommentar
trtrtr Skrevet 6. mars 2006 Del Skrevet 6. mars 2006 Jeg får også litt angst over at det er en print over en use... Liker det best om alle use er samlet øverst under #! - linja. use strict; use warnings; use .... 5708697[/snapback] Hvor "use" befinner seg er irrelevant, da disse blir utført årevis før resten av koden kjøres. Lenke til kommentar
HeltNils Skrevet 9. mars 2006 Del Skrevet 9. mars 2006 Nettopp derfor er det mer intuitivt når de ligger først i koden også. Lenke til kommentar
Torbjørn Skrevet 9. mars 2006 Del Skrevet 9. mars 2006 det er god praksis i alle språk å inkludere "moduler" øverst 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å