Utilizarea operatorilor de testare a fişierelor în expresii

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ă

            Î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