Operatoriai ir funkcijos
Perlas turi daug standartinių funkcijų. kai kurias jau matėme šiame
įvade (tokias kaip print,
sort arba reverse). Pilnas funkcijų sąrašas yra
perlfunc dokumentacijoje ir apie
kurią nors funkciją lengva pasiskaityti konsolėje įvedus perldoc -f
funkcijospavadinimas.
Perlo operatoriai pilnai aprašyti perlop dokumentacijoje. Štai
keletas dažniau sutinkamų:
Aritmetiniai:
+ sudėtis
- atimtis
* daugyba
/ dalyba
Matematinio palyginimo:
== lygybės
!= nelygybės
< mažiau negu
> daugiau negu
<= mažiau arba lygu
>= daugiau arba lygu
Simbolių eilučių palyginimo:
eq lygybės
ne nelygybės
lt mažiau nei
gt daugiau nei
le mažiau arba lygu
ge daugiau arba lygu
Kodėl reikia skirtingų palyginimo operatorių simbolių eilutėms ir
matematinėms išraiškoms? Kadangi perlas
netipizuoja kintamųjų pagal tai ar tai skaičius, ar simbolių eilutė, jam
reikia nurodyti ar rikiuoti
matematiškai (kur 99 yra mažiau nei 100) ar alfabetiškai (kur 100 eina
prieš 99)
Loginiai operatoriai:
&& ir
|| ar
! ne
&&, || bei ! galima užrašyti ir
and, or,
not. Taip jie labiau įskaitomi, tačiau keičiasi pirmumo eilė.
Plačiau apie skirtumus tarp
and ir && galima rasti perlop
dokumentacijoje.
Kiti operatoriai:
= priskyrimas
. simbolių eilučių sujungimas
x simbolių eilučių daugyba
.. intervalo operatorius (sukuria skaičių sąrašą)
Dauguma operatorių gali būti derinami su = šitokiu būdu:
$a += 1; # tas pats kaip $a = $a + 1;
$a -= 1; # tas pats kaip $a = $a - 1;
$a .= "\n"; # tas pats kaip $a = $a . "\n";
Bylos ir įvestis/išvestis
Įvesčiai ar išvesčiai bylą galima atidaryti su funkcija
open(). Pilnai su visomis detalėmis ji
aprašyta perlfunc bei perlopentut dokumentacijoje, tačiau
trumpai:
open(INFILE, "infile.txt") or die "Negaliu atidaryt input.txt: $!";
open(OUTFILE, ">outfile.txt") or die "Negaliu atidaryt outfile.txt: $!";
open(LOGFILE, ">>logfile.txt") or die "Negaliu atidaryt
logfile.txt: $!";
Skaityti iš bylos galima naudojantis <> operatorių.
Skaliariniame kontekste jis nuskaito
vieną eilutę iš bylos, o sąrašo kontekste grąžina iš bylos eilučių
sudarytą masyvą:
my $eilute = <INFILE>;
my @eilutes = <INFILE>;
Visos bylos nuskaitymas iš karto vadinamas „šliurpimu“
(slurping). Tai gali būti
naudinga, bet kartu gali ir pareikalauti daug atminties resursų. Daugumą
dalykų galima padaryti tekstą
apdorojant po eilutę ir naudojantis Perlo ciklais.
Operatorius <> dažniausiai naudojamas tokiame
whilecikle:
while (<INFILE>) { # priskiria kiekvieną bylos eilutę $_
print "Ką tik perskaičiau eilutę: $_";
}
Mes jau matėme kaip spausdinti tekstą naudojantis print().
Tačiau print() galima
nurodyti pirmu argumentu į kurią bylą spausdinti:
print STDERR "Paskutinis perspėjimas\n";
print OUTFILE $irasas;
print LOGFILE $ivykis;
Kai baigiate dirbti su bylomis, jas reiktų uždaryti su funkcija
close() (nors tiesą sakant,
Perlas sutvarkys viską ką pridarėte, net jei ir pamiršote uždaryti bylą)
close INFILE;