sivut.web

ohjeita web-sivuston tekijälle

Perl-opas: Taulukot

Taulukkomuuttuja on lista skalaarimuuttujia. Taulukkomuuttujien esitys eroaa skalaarimuuttujista siinä, että ne alkavat @-merkillä. Lauseke

@food = ("apples", "pears", "eels");
@music = ("whistle", "flute");

asettaa kolmen elementin listan muuttujan @food arvoksi ja kahden elementin listan muuttujan @music arvoksi. Taulukkoa käsitellään indeksien avulla, joiden numerointi alkaa nollasta ja indeksi sijoitetaan hakasulkeisiin ([]). Lauseke

$food[2]

palauttaa arvon eels. Huomaa että nyt käytetään @: n asemesta $: tä koska eels on skalaari.

Seuraavat lausekkeet tuottavat aivan saman tuloksen:

@moremusic = ("organ", @music, "harp");
@moremusic = ("organ", "whistle", "flute", "harp");

Kätevämpi tapa lisätä elementtejä taulukkoon on

push(@food, "eggs");

mikä lisää eggs @food-taulukon loppuun. Lisätäksesi useita arvoja taulukkoon, käytä jotakin seuraavista:

push(@food, "eggs", "lard");
push(@food, ("eggs", "lard"));push(@food, @morefood);

push-funktio palauttaa listan pituuden. Poistaaksesi listan viimeisen arvon ja palauttaaksesi sen käytä pop-funktiota.

$grub = pop(@food);

poistaa arvon eels taulukosta @food ja asettaa sen muuttujan $grub arvoksi. On myös mahdollista liittää taulukko skalaarimuuttujaan. Kuten tavallista konteksti on tärkeä:

$f = @food;

yhdistää taulukon @food koon mutta

$f = "@food";

muuttaa listan merkkijonoksi, jossa jokaisen listan kohdan välissä on välilyönti. Välilyönti voidaan muuttaa miksi tahansa muuksi merkiksi tai merkkijonoksi muuttamalla erikoismuuttujan $" arvoa.

Taulukoita voidaan myös käyttää haluttaessa liittää useita arvoja skalaarimuuttujiin:

@somefood on lista lopuista arvoista.

($a, $b) = ($c, $d);     Sama kuin $a=$c; $b=$d;
($a, $b) = @food;        $a ja $b taulukon @food kahdeksi ensimmäiseksi arvoksi
($a, @somefood) = @food; $a taulukon @food ensimmäiseksi arvoksi, sitten taulukko @somefood
(@somefood, $a) = @food; Taulukko @somefood on taulukko @food, $a määrittelemätön

Viimeisin tapahtuu koska taulukko @somefood yrittää ottaa niin paljon arvoja taulukolta @food kuin mahdollista. Tämän vuoksi tuon kaltaisia lausekkeita kannattaa välttää. Taulukon viimeisen elementin indeksin saa selville seuraavasti:

$#food

Kaikki seuraavat tuottavat erilaisen tuloksen:

print @food;
print "@food";
print @food."";

Seuraava sivu: Assosiatiiviset taulukot.


Käyttäjien kommentit

24.4.2005 19:59
*-) <MikaKultanen@msn.com>

Siis en ole tähän asti ymmärtänyt tästä perlistä mitään.. mihin ja missä tätä käytetään??

25.4.2005 00:19
Pallas <mpallas@suomi24.fi>

jä mä taisin ymmärtää vielä vähemmän kuin sä!

27.10.2006 16:03
joku

häh?

11.12.2006 20:51
Dramo <dramox@gmail.com>

Ööh. Tämä oli nyt vähän tämmöinen pikainen. Ei jäänyt yhtään mitään päähän.

17.3.2007 19:15
eero

hei

Lisää oma kommentti


Ari Paulin
ari.paulin@pp.htv.fi
http://www.pp.htv.fi/apaulin/