Masyvai |
Masyvas - tai kintamasis, kuriame
saugomas skaliarinių kintamųjų sąrašas. Kiekvienas masyvo elementas yra
skaliarinis kintamasis, turintis savo skariarinius duomenis. Masyve gali būti
bet koks elementų skaičius. Mažiausias masyvas yra tuščias, didžiausias
priklauso nuo kompiuterio operatyviosios atminties dydžio.
Masyvo pavadinimas prasideda simboliu @ Pvz.
@array, @var. Masyve indeksai skaičiuojami
nuo 0 ir apskliaudžiami [ ] kaip C/C++.
Priskiriant masyvo elementams reikšmes, jos atskiriamos
kableliais, pvz:
@array = ("fred","barney","betty","wilma");
Masyvą gali sudaryti skirtingų tipų literalai, pvz:
@array1 = ("Fred", 4.58, "Betty", Vilma", 1.58e+9);
Masyvo elementai gali būti ne tik
literalai, bet ir
skaliariniai kintamieji. Pvz:
@array2 = ("Fred", 4.58, "Betty",
$var1, $var2);
Apibrėžiant masyvo reikšmes,
galima naudoti sarašo konstruktoriaus operatorių ( .. ), kuris konstruoja masyvą
pagal užsiduotas pirmąją ir paskutiniąją intervalo reikšmes, atitinkamai didindamas 1, pvz:
@array2 = (1 .. 5);
# tas pats, kaip (1, 2, 3, 4, 5)
@array2 = (1.2 .. 5.2)
# tas pats, kaip (1.2, 2.2, 3.2, 4.2, 5.2)
@array2 = (2 .. 6,10,12);
# tas pats, kaip (2,3,4,5,6,10,12)
Masyvo elementai
Kreipiantis į
masyvo elementą, nurodomas jo numeris laužtiniuose skliaustuose [ ], pvz:
$c = $masyvas[0];
# $c reikšmė lygi masyvo pirmajam elementui
$fred[2]++;
# @fred antras elementas padidinamas 1
$fred[1] += 4;
# prie antro elemento pridedama 4
($fred[0],$fred[1]) = ($fred[1],$fred[0]); #
sukeičiami pirmas ir antas elementai
$# (pvz. $#array)
naudojami
norint sužinoti paskutinio masyvo elemento indeksą.@fred = ("fred", "wilma",
"pebbles", "dino");
print $fred[-1]; # atsakymas "dino"
print $#fred; #
atsakymas 3
print $fred[$#fred]; # atsakymas "dino"
Masyvų funkcijos
splice(@array, first, amount, list) - pakeičia masyvo @array narių skaičių amount pradedant nuo first, duotomis reikšmėmis iš list.
push(@array, $newvalue)
- masyvą @array
papildo nauju elementu, pvz:
push(@array,$newvalue);
# tas pats kaip ir @array
= (@array, $newvalue)
Kaip matome funkcijos pop() ir push() keičia masyvus iš "dešinės". Egzistuoja panašios funkcijos, kurios keičia masyvus iš "kairės".
unshift(@array, value) - masyvo pradžioje įterpia naują
elementą value, pvz:
unshift(@fred,$a); # tas pats kaip @fred=($a,@fred);
unshift(@fred,$a,$b,$c); # tas
pats kaip @fred=($a,$b,$c,@fred);
Jei masyvas, nurodytas funkcijose pop()
,
shift()
yra tuščias, gražinama reikšmė
undef
.
reverse(@array) - išdėsto masyvo elementus atvirkštine
tvarka, pvz:
@a = (7,8,9);
@b = reverse(@a);
# @b masyvą sudaroelementai (9,8,7)
sort(@array) - rūšiuoja masyvo elementus didėjančia tvarka.
Masyvo elementai traktuojami kaip eilutės, o rūšiavimas atliekamas ASCII
lentėlės
pagrindu. Naudoti funkciją sort()reikia
apgalvotai, nes rūšiavimo rezultatas gali būti netoks, kokio tikimasi, pvz.
@y = (1,2,4,8,16,32,64);
@y = sort(@y); # @y elementai išdėstomi sekančiai: 1,16,2,32,4,64,8
Funkcijos reverse ir sort nekeičia masyvo, nurodyto kaip funkcijos argumentų sąraše. Funkcijų rezultatas yra modifikuotas (suleista elementų išdėstymo tvarka) masyvas.
chomp(@array) - pašalina iš kiekvieno masyvo elemento naujos
eilutės simbolį. Funkcija chomp()
taikoma ir skaliariniams kintamiesiems.
@stuff = ("hello\n","world\n","happy days");
chomp(@stuff);
# @stuff dabar turi tokias reikšmes ("hello","world","happy days")