|
Сега трябва да внимавате във следващите обяснения, защото после ще се връщате тук отново. Символът = е оператор за присвояване на стойност, не е оператор за сравнение. Следователно:
if ($x = 10) е винаги истина, защото на $x успешно се присвоява стойността 10. if ($x == 10) сравнява две стойности, които може да не са равни. И така ние сравнявахме до сега числа, но ние можем и сигурно ще се налага да сравняваме променливи. CODE
Нещо грешно има в кода. Нещо изглежда не е както трябва. Очевидно Mark е различно от Tony, тогава защо perl ги намира за равни? Те са равни -- числено. Ние трябва да ги тестваме като стрингове, а не като числа. За да направим това, просто заместете == със eq и евевнтуално горния код ще работи както трябва. Има два типа оператори за сравнение - за числа и за стрингове. Видяхте вече два такива, == и eq. Пробвайте този код: CODE
Операторът lt сравнява в контекста на стринг, и разбира се < сравнява в контекста на числа. Азбучно, това е в контекста на стринг, 291 е след 30. Това е по кодовата таблица ASCII. Мотото на Perl е "Има повече от един начин да се направи" или TIMTOWTDI. Произнася се 'Tim-Toady'. Това ръководство не се опитва да Ви покаже всички начини за решаването на даден проблем. При писане на вашите програми ще ги откривате. В следващата таблица са показани операторите за сравнение в Perl: Числен контекст В контекста на стринг Равно == eq Не равно != ne По-голямо от > gt По малко от < lt По-голямо или равно >= ge По-малко или равно <= le Повече за if Пробвайте този код: $age=25; $max=30; CODE
Лесно е да видите какво прави той. Ако израза е грешен, тогава все едно какво има в else - блока се изпълнява. Просто е. Но ако искате още един тест? Perl може и това. CODE
Ако първия тест пропадне, вторият се преценява. Това се извършва докато има elsif, или else е достигната. Има голяма разлика между горния код и следващия по-долу: CODE
Ако го стартирате ще Ви върне същия резултат - в този случай. Както и да е, но това е Лоша Практика в Програмирането. В този случай ние тестваме число, но представете си че тестваме стринг за да видим дали съдържат R или S. Възможно е стринга да съдържа и двете R и S. Така ще се преминат и двата 'if' теста. С използването на elsif ще избегнете този недостатък. При първото срещане на истина в elsif изявление то се изпълнява, като следващите не се изпълняват.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||









