Till Startsidan
JavaScript.nu / Perl-kurs / Bearbeta variabler

L�R DIG ATT PROGRAMMERA PERL
Bearbeta variabler

Nu har du l�rt dig lite om olika variabler, scalar ($), array (@) och hashes (%). Nu ska du l�ra dig n�gra olika funktioner som allm�nt kan vara v�rda att l�ra sig. T�nk dock p� att du inte ska beh�va plugga in alla dessa funktioner h�r och nu, utan l�s bara genom sidan och gl�mmer du senare bort funktionerna s� kan du kolla upp vad de gjorde h�r.


sort(@array)
Sorterar v�rdena i @array i bokstavsordning. @array �ndras inte om du inte skriver: @array=sort(@array);

Exempel:
#!/usr/bin/perl

@aaa=sort("1000","!Viktigt","A","a","Brevpapper","2000");
@bbb=("1000","!Viktigt","A","a","Brevpapper","2000");

print "Content-type:text/html\n\n";
print "@aaa\n";
print sort(@bbb);
print "\n";
print "$aaa[1]\n";
print "$bbb[1]";

Utmatning:
!Viktigt 1000 2000 A Brevpapper a
!Viktigt10002000ABrevpappera
1000
!Viktigt
Observera att n�r @aaa skapas s� �r alla v�rdena sorterade i @aaa. @bbb d�remot �r inte sorterad. F�rutom att utskriften f�r @aaa sker med mellanrum mellan v�rdena s� ligger alla v�rdena i en annan ordning gentemot @bbb, vilket visas d� vi skriver ut det andra v�rdet (index 1) i @aaa och @bbb i slutet av scriptet.
L�gg ocks� m�rke till ordningen av A, Brevpapper och a. A kommer f�rst, Brevpapper sedan och sist kommer a.


reverse(@array)
V�nder p� arrayen. Den sista posten kommer f�rst och den f�rsta kommer sist, den n�st f�rsta kommer n�st sist och den n�st sista kommer n�st f�rst osv.

Exempel:
#!/usr/bin/perl

@aaa=reverse("1000","!Viktigt","A","a","Brevpapper","2000");
@bbb=("1000","!Viktigt","A","a","Brevpapper","2000");

print "Content-type:text/html\n\n";
print "@aaa\n";
print reverse(@bbb);

Utmatning:
2000 Brevpapper a A !Viktigt 1000
2000BrevpapperaA!Viktigt1000
Observera att utskriften blir med mellanrum d� jag skriver ut @aaa eftersom jag angav reverse d� jag deklarerade variabeln, medan @bbb skrivs ut utan mellanrum, eftersom jag "v�nder" p� v�rdena d� jag skriver ut @bbb.


foreach $scalar (@array)
En loop som loppar $#array+1 g�nger, dvs, den loopar lika m�nga g�nger som det finns v�rden i @array. Vid f�rsta loopingen f�r $scalar det v�rde som finns i $array[0], n�sta looping f�r det $array[1]'s v�rde etc.

Exempel:
#!/usr/bin/perl

@medlemmar=("Sven","Erik","Gustav","Henrik");

print "Content-type:text/html\n\n";
print "V�ra medlemmar:\n";
foreach $medlem (@medlemmar)
{
print "$medlem\n";
}

Utmatning:
V�ra medlemmar:
Sven
Erik
Gustav
Henrik
Detta �r mycket anv�ndbart i m�nga sammanhang d� man vill g� igenom alla v�rden i en array. foreach kan ocks� skrivas som bara for (trots att detta �r helt skilda saker), men f�r l�sv�nlighetens skull skrivs ofta just foreach.


split(/x/, $scalar)
x=det som ska separera str�ngen
Delar $scalar p� alla st�llen d�r x finns och skapar en array av delarna i den ordning som delarna kommer i str�ngen.

Exempel 1:
#!/usr/bin/perl

$hemligt="123456:Administrator:Yt6Jgjkg7R6";
@delar=split(/:/, $hemligt);

print "Content-type:text/html\n\n";
print "V�lkommen $delar[1]!\nDin kod �r $delar[0].\n";
print "Ditt hemliga ID �r: $delar[2]";

Utmatning:
V�lkommen Administrator!
Din kod �r 123456.
Ditt hemliga ID �r: Yt6Jgjkg7R6


Exempel 2:
#!/usr/bin/perl

$hemligt="123456=Administrator=Yt6Jgjkg7R6";
($kod, $login, $id)=split(/=/, $hemligt);

print "Content-type:text/html\n\n";
print "V�lkommen $login!\nDin kod �r $kod.\n";
print "Ditt hemliga ID �r: $id";

Utmatning:
V�lkommen Administrator!
Din kod �r 123456.
Ditt hemliga ID �r: Yt6Jgjkg7R6

push(@array1, @array2)
L�gger till @array2 i slutet av @array1. @array2 p�verkas inte. Detta �r exakt samma sak som att skriva:
foreach $temp (@array2) {     # Loopar lika m�nga g�nger som @array2 har v�rden
@array1[++$#array1] = $temp;  # F�r varje loop �kar @array1 med ett v�rde (ett v�rde fr�n @array2)
}
Som du f�rst�r �r det l�ttare och beh�ndigare att skriva push(@array1, @array2) ist�llet f�r scriptet ovan.
Exempel:
#!/usr/bin/perl

@vardag=("M�n","Tis","Ons","Tors","Fre");
@helgdag=("L�r","S�n");    # @helgdag kommer aldrig att �ndras
push(@vardag, @helgdag);   # @vardag �ndras nu och inneh�ller 7 dagar

print "Content-type:text/html\n\n";
foreach $dag (@vardag)
{
print "$dag";
print "dag\n";
}

Utmatning:
M�ndag
Tiddag
Onsdag
Torsdag
Fredag
L�rdag
S�ndag

[Perl guiden] - [Till kapitel 5]






Copyright © Omid Rouhani 1997-2022; Alla r�ttigheter reserverade.
Guider: [ HTML guide ] - [ JavaScript guide ] - [ DHTML guide ] - [ Perl guide ] - [ Sitemap ]