Įvadas į Perl: baigiamoji dalis: įpraiškos ir kita

Įpraiškos

Perlas palaiko sudėtingą ir plačią įpraiškų sintaksę. Pilną jos aprašymą galima rasti perlrequick,

perlretut ir kituose dokumentacijos skyriuose. Tačiau trumpai:

Paprastas tikrinimas

if (/foo/)      { ... } # 'true' jei $_ yra simbolių seka 'foo'
if($a =~ /foo/) { ... } # 'true' jei $a yra simbolių seka 'foo'

Įpraiškų operatorius // aprašytas perlop dokumentacijoje. Jis pagal nutylėjimą įprašką

taiko kintamajam $_, tačiau tai galima pakeisti, pasinaudojus operatoriumi =~ (kurio

aprašymą irgi galima rasti perlop dokumentacijoje).

Paprastas pakeitimas

s/foo/bar/;           # pakeičia 'foo' į 'bar' kintamajame $_
$a =~ s/foo/bar/;     # pakeičia 'foo' į 'bar' kintamajame $a
$a =~ s/foo/bar/g;    # pakeičia VISUS 'foo' į 'bar' kintamajame $a

Pakeitimo operatorius s/// aprašytas perlop dokumentacijoje.

Sudėtingesnės įpraiškos

Įpraiškos nebūtinai sudaromos iš pastovių simbolių eilučių. Tiesą sakant, naudojantis sudėtingesnėmis

įpraiškomis galite aprašyti tokius šablonus, kokius tik sugalvosite. Pilnai tai aprašyta perlre

dokumentacijoje, o čia pateikiama tik trumpa lentelė:

.               vienas bet koks simbolis
\s              tarpai, naujos eilutės ir tabuliacijos simboliai (whitespace)
\S              ne tarpai, ne neujos eilutės ir ne tabuliacija (non-whitespace)
\d              skaitmuo (0-9)
\D              ne skaitmuo
\w              žodžių simbolis (a-z, A-Z, 0-9 ir _)
\W              ne žodžių simbolis
[aeiou]         atitinka vieną simbolį iš duotos aibės
[^aeiou]        atitinka vieną simbolį ne iš duotosios aibės
(foo|bar|baz)   atitinka vieną iš alternatyvų
^               eilutės pradžia
$               eilutės pabaiga

Taip pat galima nurodyti kiek kartų įpraiška turi atitikti prieš tai nurodytą išraišką, kur

„išraiška“ yra paprastas simbolis arba vienas iš metasimbolių nurodytų prieš šią pastraipą

esančioje lentelėje.

*       nulį ar daugiau kartų
+       vieną ar daugiau kartų
?       nulį arba vieną kartą
{3}     lygiai tris kartus
{3,6}   nuo trijų iki šešių kartų
{3,}    tris ar daugiau kartų

Keletas trumpų pavyzdžių:

/^\d+/         eilutė prasidedanti vienu ar daugiau skaitmenų
/^$/            tuščia eilutė (po eilutės pradžios iš karto eina eilutės pabaiga)
/(\d\s){3}/    trys skaitmenys atskirti tarpais ar tabuliacija (tarkim "3 4 5 ")
/(a.)+/         eilutė, kurioje kiekviena neporinė raidė yra 'a' (pvz 'abacadaf')
# Šis ciklas skaito iš STDIN ir spausdina netuščias eilutes:
while (<>) {
    next if /^$/;
    print;
}

Skliausteliai

Skliausteliai naudojami ne vien tik grupavimui – jie turi ir kitą paskirtį. Jie gali būti naudojami

įpraiškos rezultatų išsaugojimui. Rezultatai atsiduria kintamuosiuose $1, $2 ir taip

toliau.

# pigus ir ne visai tikslus būdas išskaidyti el.pašto adresą į dalis:
if ($email =~ /([^@])+@(.+)/) {
    print "Vartotojo vardas: $1\n";
    print "Domenas: $2\n";
}

Kitos įpraiškų galimybės

Perlo įpraiškos dar palaiko daugybę dalykų (backreferences, lookaheads ir t.t.) Apie visą tai

galima pasiskaityti perlrequick, perlretut ir perlre dokumentacijose.

Subrutinų rašymas

Labai lengva rašytis savo subrutinas:

sub log {
    my $pranesimas = shift;
    print LOGBYLA $pranesimas;
}

Ką veikia tas shift? Na, subrutinai perduodami argumentai atsiranda masyve @_ (apie tai

daugiau perlvar dokumentacijoje). Jeigu shift neperduodami jokie argumentai, ši funkcija

naudoja masyvą @_. Tad my $pranesimas = shift; paima pirmą argumentų masyvo narį ir

priskiria jį kintamajam $pranesimas.

Su @_ galima elgtis ir kitaip:

my ($pranesimas, $svarbumas) = @_; # dažnas būdas
my $pranesimas = $_[0];            # retas ir bjaurus būdas

Subrutinos gali ir grąžinti reikšmes:

sub kvadratas {
    my $skaicius = shift;
    my $rezultatas = $skaicius * $skaicius;
    return $rezultatas;
}

Daugiau apie subrutinas perlsub dokumentacijoje

Objektinis Perlas

Objektinis Perlas yra ganėtinai paprastas. Objektai perle yra nuorodos, kurios magiškai žino kokį

objektą jos vaizduoja. Tačiau objektinis perlas neįeina į šį trumpą įvadą. Skaitykite perlboot,

perltoot, perltooc ir perlobj dokumentaciją.

Pradedantieji Perlo programuotojai dažniausiai su objektiniu programavimu susiduria tik naudodamiesi

Perlo moduliais.

Naudojimasis Perlo moduliais

Perlo moduliai leidžia jums neišradinėti dviračio, nes galima naudoti skodu, kuris jau kažkieno

parašytas. Modulius galima parsisiųsti iš http://www.cpan.org. Nemažai

modulių yra įdiegiami kartu su pačiu Perlu.

Moduliai CPAN svetainėje yra kategorizuoti. Yra daug įvairiausių kategorijų: nuo tekso apdorojimo iki

tinklo protokolų, nuo duomenų bazių iki grafikos.

Norint sužinoti kaip naudotis kuriuo nors moduliu, komandinėje eilutėje parašykite perldoc

Modulio::Pavadinimas. Kode dažniausiai jums reikės rašyti use Modulio::Pavadinimas – tai

įkraus moulį ir leis naudotis jo funkcijomis.

perlfaq dokumentacijoje yra dažnai užduodami klausimai ir atsakymai apie dažnai pasitaikančias

užduotis. Dažnai atsakymai siūlo naudotis vienu ar kitu moduliu.

perlmod dokumentacija bendrai aprašo Perlo modulius, perlmodlib dokumentacijoje yra sąrašas

modulių, kurie įdiegti kartu su Perlu.

Jeigu patys norite rašytis Perlo modulius, skaitykite perlnewmod dokumentaciją.

Comments Closed

4 Comments

  1. moxliuk: nuostabus darbas, naujokams turetu but naudingas ir aiskus ;] gajla sau nieko naujo neradau ;(..

Comments are closed.