Kintamųjų sritys
Kol kas visada kintamuosius aprašėme naudodami šią sintaksę:
my $kintamasis = "reikšmė";
Tiesą sakant, my nėra būtinas, galima tiesiog rašyti:
$kintamasis = "reikšmė";
Tačiau jei praleidžiate my, sukuriamas globalusis kintamasis
visoje jūsų programoje, o tai nėra
pats geriausias programavimo būdas. my sukuria leksinės
srities (lexically scoped)
kintamąjį, kuris galioja tik tame bloke, kuriame jis yra aprašytas
(bloką sudaro keletas sakinių, apskliaustų
figūriniais skliaustais).
my $a = "foo"; if ($kazkas) { my $b = "bar"; print $a; # spausdina "foo" print $b; # spausdina "bar" } print $a; # spausdina "foo" print $b; # nieko nespausdina, nes $b galiojimo blokas jau baigėsi
Jeigu naudosite my kartu su use strict; jūsų
programos pradžioje, Perlo
interpretatorius galės pastebėti dažnas programuotojų klaidas ir apie
tai jus įspėti. Tarkim aukščiau
duotame pavyzdyje paskutinis print $b; išmestų klaidą ir
programa neveiktų. Rekomenduojama visada
naudoti strict sintaksę.
Sąlygos ir ciklų sakiniai
Perlas turi visus standartinius ciklos ir sąlygos sakinius išskyrus
switch/case (bet jei jums
tikrai jų reikia, galite pasinaudoti moduliu Switch, kuris
netgi gali daugiau nei įprasti
switch/case sakiniai kitose kalbose).
Sąlyga gali būti bet kuris Perlo sakinys. Kitame skyriuje bus
aprašomi operatoriai, tad žiūrėkite ten,
kokie sąlygos, Būlio logikos operatoriai dažnai naudojami sąlygos
sakiniuose.
if
if ( sąlyga ) { ... } elsif ( kita sąlyga ) { ... } else { ... }
Yra ir atvirkštinė versija:
unless ( sąlyga ) { ... }
… kuri reiškia tą patį kaip ir if (!sąlyga) { ... }, tik
unless lengviau
perskaityt.
Perlo sąlygos sakiniuose figūriniai skliaustai yra būtini, net jei
yra tik vienas sakinys sąlygos bloke.
Tačiau galima be to apsieiti ir iškelti sąlygą į sakinio galą:
# tradicinis būdas if ( $kazkas ) { print "aha!"; } # labiau perliškas būdas: print "aha!" if $kazkas; print "nebėra bananų" unless $bananai;
while
while ( sąlyga ) { ... }
Kaip ir su unless, yra ir atvirkštinė versija:
until ( sąlyga ) { # tas pats kaip while (!sąlyga) ... }
while galima permesti ir į galą:
print "la la la\n" while 1; # amžinas ciklas
for
Lygiai taip kaip ir C:
for ($i = 0; $i <= $max; $i++) { ... }
C stiliaus for ciklas retai naudojamas Perle, nes Perl turi
draugiškesnį ir lengviau panaudojamą
foreach ciklą.
foreach
foreach (@masyvas) { print "Masyvo elementas $_\n"; } # nebūtina naudot $_... foreach my $raktas (keys %hash) { print "Rakto $raktas reikšmė yra $hash{$raktas}\n"; }
Daugiau apie ciklo sąkinius (ir dar apie tuos kurie čia nepaminėti)
galima rasti perlsyn
dokumentacijoje.
atrodo busiu pirmas :). tik baigiau skaityti pirmaja dali, atsirado antra. puiku ;].
nice moxliau! ;)
(tikiuosi kada pamatyt bendrai surinktas visas rasliavas ;) o gal patalpinam kaip tada siuliau? (pas mane … na tai
kas jau yra))
beje moxlius TU VISISKAI PAMIRSAI _PERL MAIKUCIU_ PROBLEMA!
mr2 – tapo aktualu??
hmmz…idomu :)
idomu, gal pats laikas pradeti mokintis perl?