114 |
Un exemplu oarecum mai complicat de testare a fişierelor este următorul
open(INFILE,
"infile") && !(-e "outfile") &&
open(OUTFILE, ">outfile") || die("Cannot open
files\n");
în care expresia compusă conjunctivă
open(INFILE,
"infile") && !(-e "outfile") &&
open(OUTFILE, ">outfile")
este adevărată doar dacă toate propozitiile sunt adevărate. Adică dacă
Fişierul de intrare infile poate fi deschis.
Fişierul de ieşire outfile nu există.
Fişierul de ieşire outfile poate fi deschis.
În secvenţe de acest tip Perl (dar şi alte limbaje) face economie de calcul. Dacă prima propoziţie este falsă el numai evaluează mai departe deoarece ştie deja rezultatul: propoziţia compusă conjunctivă este falsă. Dacă prima propoziţie este adevărată, Perl trece la evaluarea celei de a doua. În caz că aceasta este falsă, Perl iar ştie valoarea de adevăr a funcţie compuse şi nu mai evaluează propoziţia a treia. Dacă şi cea de-a doua propoziţie este adevărată Perl trece la evaluarea celei de a treia, care va decide ea valoarea de adevăr a propoziţiei compuse.
În toate situaţiile în care propoziţia
compusă conjunctivă este falsă perl trece la evaluarea ultimei
propoziţii care cere terminarea programului prin instrucţiunea die
.
Dacă propoziţia compusă conjunctivă este adevărată Perl iar face economie de calcul şi nu mai evaluează ultima propoziţie (ce conţine instrucţiunea die) deoarece iar ştie răspunsul: propoziţia “adevărat SAU orice” este adevărată, si prin urmare va continua execuţia programului după instrucţiunea compusă de testare a fişierelor.
Exemplu acesta este tipic pentru utilizarea performantă a facilităţilor limbajului Perl.
© Cornel Mironel Niculae, 2003-2004
13-Nov-2009