HOME -> PERL_TUTORIAL -> perl-10-funktioner-lister Onsdag, 13. December 2017

HOME
FORUM
OPEN DIRECTORY
BOOKMARK
Offentliggjort 2003 - Opdateret n/a

Lektion 10

Lektionen giver en god oversigt over de mest anvendte funktioner til lister/arrays og hashes.

Indhold

 

TopDelete
Via delete kan du slette et vilkårlig elementpar i en hash. Undef derimod sletter kun værdien, men lader elementparret forblive. For at anvende funktionen skal du bruge nøglen/NAVN på det element par som ønskes slettet.
Slettes et elementpar vil den returnere NAVN og værdi, hvis der ikke blev slettet noget returneres undefined.

 

TopJoin
Join har den modsatte effekt af split. Via join kan man tage data fra en liste og sætte dem sammen til en streng.

Der returneres en streng, hvor alle elementer fra listen er noteret fortløbende, adskilt med det angivne tegn.


#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

my @vaerdi;
for(my $i=0; $i<8; $i++) {
$vaerdi[$i] = 2 ** ($i+1);
}
my $vaerdistr = join(";",@vaerdi);

print "Content-type: text/html\n\n";
# Doctype erklæring her!
print "<html><head><title>Funktioner</title></head><body>\n";
print "$vaerdistr\n";
print "</body></html>\n";


Resultat:


Gennemgang af scriptet.

Eksemplet anvender en for løkke til at oprette en liste der hedder @vaerdi, i denne gemmes alle vore værdier. Efterfølgende overdrages listen til vores funktion join. For at adskille har vi her anvendt semikolon (;). Resultatet gemmes i skalaren $vaerdistr.

 

TopKeys
Via funktionen keys kan du få en liste med alle nøgler i en hash.


#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

my @variabler = keys(%ENV);

print "Content-type: text/html\n\n";
# Doctype erklæring her!
print "<html><head><title>Funktioner</title></head><body>\n";

print "<p>Definerede ENV variabler</p>\n";
print "<ul>\n";
foreach(@variabler) {
print "<li>$_</li>\n";
}
print "</ul>\n";

print "</body></html>\n";


Resultat:


Gennemgang af scriptet.

Eksemplet returnerer den i forvejen defineret hash %ENV i en liste @variabler.

 

TopPop
Pop sletter sidste element i en liste.


#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

my $freddy = "Fred Flintstone er 35 år";
my $freddylaengde = length($freddy);
my @tegn;
for(my $i=0;$i<$freddylaengde;$i++) {
$tegn[$i] = substr($freddy,$i,1);
}

print "Content-type: text/html\n\n";
# Doctype erklæring her!
print "<html><head><title>Funktioner</title></head><body>\n";

for(my $i=0; $i<$freddylaengde; $i++) {
print "@tegn<br />\n";
pop(@tegn);
}

print "</body></html>\n";


Resultat:


Gennemgang af scriptet.

Vi har defineret en sætning som vi kalder $freddy. Fra denne henter vi alle enkelte tegn og lægger dem i et array. I eksemplet er der anvendt en for løkke der kører så længe der er tegn til rådighed. For hver gennemløb udskrives vores array @tegn. Samtidig forkortes sætningen for hvert gennemløb med et tegn da vi anvender pop. Derfor udskrives sætningen et tegn mindre for hvert gennemløb!

 

TopPush
Push tilføjer et element bagerst i listen.


#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

my @navne = ("Hans","Kim","Kasper","Torben");
my @nyenavne = ("Pia","Lisa","Signe","Kirsten");

foreach(@nyenavne) {
push(@navne,$_);
}
@navne = sort(@navne);

print "Content-type: text/html\n\n";
# Doctype erklæring her!
print "<html><head><title>Test-Ausgabe</title></head><body>\n";

foreach(@navne) {
print "$_<br>\n";
}

print "</body></html>\n";


Resultat:


Gennemgang af scriptet.

Vi har erklæret to lister @navne og @nyenavne. Ved hjælp af en foreach løkke bliver elementerne fra listen @nyenavne tilføjet @navne stykvis. Efterfølgende sorteres navnene.

 

TopShift
Shift sletter det første element i en liste. Efterfølgende elementer vil tilpasse sig denne ændring og rykke en plads frem.


#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

my @bynavne = ("Århus, ","Ålborg, ","Odense");

print "Content-type: text/html\n\n";
# Doctype erklæring her!
print "<html><head><title>Funktioner</title></head><body>\n";

my $mindre = @bynavne;
for(my $i = 0; $i < $mindre; $i++) {
print "<p>Tilbage er @bynavne<br>\n";
shift(@bynavne);
}
print "<p>Tilbage er .. ingen!</p>\n";

print "</body></html>\n";


Resultat:


Gennemgang af scriptet.

Vi har erklæret et array med tre bynavne. Endvidere er der lavet en for løkke der gennemløbes indtil der ikke er flere elementer i den oprindelige array @bynavne. Længden af listen gemmes i skalaren $mindre. Efter hvert gennemløb fjernes at bynavn. Sluttelig udskrives "Tilbage er .. ingen"

 

TopUnshift
Unshift tilføjer et element forrest i listen.


#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

my @navne = ("Hans<br />\n","Kim<br />\n","Kasper<br />\n");

print "Content-type: text/html\n\n";
# Doctype erklæring her!
print "<html><head><title>Funktioner</title></head><body>\n";

unshift(@navne,"Lotte<br />\n");
print "@navne";

print "</body></html>\n";


Resultat:


Gennemgang af scriptet.

Vi har et array @navne som indeholder Hans, Kim og Kasper. Via unshift tilføjer vi navnet Lotte forrest i listen og udskriver efterfølgende vores array @navne.

 

Næste lektion skal handle om CGI Environment Variabler >>

 

Copyright © 2002 - 2017
NETeXplorer.dk · All rights reserved Top