Įvadas į Perl: antroji dalis: kintamųjų sritys, ciklai ir sąlygos

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.

5 Comments

  1. atrodo busiu pirmas :). tik baigiau skaityti pirmaja dali, atsirado antra. puiku ;].

  2. 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!

Comments are closed.