Grunder i Perl (del 2)

Ska ta upp lite grejer här i del2 som ska få er förstå lite mer om Perl och hur man kan använda det för att skapa dynamiska hemsidor. Eftersom jag jobbar så otroligt mycket så hade jag tänkt mig skriva ett antal små artiklar om perl som förklarar en liten grej eller en funktion i taget samt kanske till och med visa lite funktioner och förklara dom rad för rad.

Nu ska jag förklara lite om miljö variabler i perl. Alla inbyggda miljö variabler ligger i ENV. Variablerna hämtas genom $ENV{'MILJO_VARIABEL'} och här ska jag lista ett antal olika miljö variabler.

 #!/usr/bin/perl -w
 print("Content-type: text/html\n\n");
 
 print<<vars;
 CGI Gateyway Version: $ENV{'GATEWAY_INTERFACE'}
 Server Namn: $ENV{'SERVER_NAME'}
 Server Program: $ENV{'SERVER_SOFTWARE'}
 Protokoll: $ENV{'SERVER_PROTOCOL'}
 Server Port: $ENV{'SERVER_PORT'}
 Server Metod: $ENV{'REQUEST_METHOD'}
 Sökvägs Information: $ENV{'PATH_INFO'}
 Sökväg: $ENV{'PATH_TRANSLATED'}
 Filnamn: $ENV{'SCRIPT_NAME'}
 Söksträng: $ENV{'QUERY_STRING'} (<a href=$ENV{'SCRIPT_NAME'}?testar=grejjen>Testa</a>)
 Klient Namn: $ENV{'REMOTE_HOST'}
 Klient Adress: $ENV{'REMOTE_ADDR'}
 Autentiserings Metod: $ENV{'AUTH_TYPE'}
 Klient Användare: $ENV{'REMOTE_USER'}
 Klient Ident: $ENV{'REMOTE_IDENT'}
 Dokument Typ: $ENV{'CONTENT_TYPE'}
 Dokumentets storlek: $ENV{'CONTENT_LENGTH'}
 Tillåten HTTP: $ENV{'HTTP_ACCEPT'}
 Klient Webbläsare: $ENV{'HTTP_USER_AGENT'}
 Ursprungs Adress: $ENV{'HTTP_REFERER'}
 vars
 
 exit(0);

Nu har ni här ett utmärkt exempel på olika miljö variabler i perl.

Som ni ser om ni har laddat upp detta scriptet och lagt till flera GET strängar efter så hamnar dom alla i en lång rad i $ENV{'QUERY_STRING'} och det kan ju minst sagt vara jobbigt om man vill skilja på dom. I PHP är detta betydligt enklare därför följer här ett litet kodexempel som kan skilja på de olika värdena i strängen.

 sub fetch_get_args {
 	if($ENV{QUERY_STRING} =~ m/\&/) {
        		 @GET = split(/\&/,$ENV{QUERY_STRING});
 	} else {
        		 $GET[0] = $ENV{QUERY_STRING};
 	}
 
 	return(@GET);
 }

Denna kod skapar en GET array som liknar den i Perl, den kan lätt utvecklas för att göra en associerad array med till exempel en hash.

Hoppas detta hjälper lite, snart kommer mer om Perl5.