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 ]