Įvadas į Perl: trečioji dalis: operatoriai ir I/O
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 while
cikle:
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;