Webmaster общности: Predpriemach.com | SearchEngines.bg
    web-tourist27/12/20194min00

    PERL – ВТОРА ЧАСТ

    Оператори.Аритметични и логически оператори.
    Приоритети на операторите.

    Основната част от операторите в Perl са оператори за работа с числа (числови оператори). Операторите върху низове не са чак толкова много, но пък Perl предоставя множество функции за работа с низове. Хубавото в случая е, че Perl не прави особенна разлика между фукнции и оператори. Разликата е само в записа – в повечето случаи операторите се записват между аргументите си (например 5 – 3), а функциите – преди аргументите, които получават (print (5,3)). Числовите оператори се делят на аритметични и логически. Те са същите както тези на Java Script.Ако сте пропуснали тази глава етотаблицатас аритметичните оператори. Perl обаче добавя и оператор за повдигане на степен – оператора **:

    #!/usr/bin/perl
    #ex5.plx
    use warnings;
    print 2**4,"\n";

    Приоритета на операторите с следния:

    Опрератори работещи със списъци – това са например скобите.
    Повдигане на степен – **.
    Унарен минус – например -2.
    Умножение, деление и делене по модул – *,/,%.
    Събиране и изваждане – +,-.
    Разгледаните оператори, работят така както го правим ние. Компютрите, обаче работят с двоични числа и Perl разбира се разполага с такива оператори (повече информация за булевата аритметика). Ето и таблица с тях:

    Оператор Действие
    & Побитово "и"
    | Побитово "или"
    ^ Побитово "изключващо или"
    ~ Отрицание

    Ето пример за използване на побитови оператори:

    #!/usr/bin/perl
    #ex6.plx
    use warnings;
    #51 = 00110011
    #81 = 01010101
    print "51 AND 81 is ",51 & 81,"\n";
    #Result is 17 = 00010001
    print "51 OR 81 is ",51 | 81,"\n";
    #Result is 119 = 01110111
    print "51 XOR 81 is ",51 ^ 81,"\n";
    #Result is 105 = 01101001

    Операторите за среавнение на числа са същите както и в Java Script. Това е таблицата с операторите за сравнение. Perl обаче добавя и един нов оператор, който не е точно оператор за сравнение, тъй като не връща стойност истина или лъжа. Той връща 0 ако двата аргумента са равни, 1 ако аргумента вляво е по – голям и -1 – ако аргумента отдясно е по – голям. Това е оператора <=>.
    Логическите оператори на Perl отново същите както и на Java Scipt, които можете да намерите в тази таблица. Perl позволява и използването на and вместо оператора && , or вместо || и not вместо !.Специфичното на Perl е, че използва специална техника на тяхното изчисление наречена отложено изчисление. Тя се харектеризира в това, че щом perl (под Perl с малки букви ще имам впредвид интерпретатора на Perl ) научи отговора на въпроса, той спира по нататъшното изчисление на логическия израз. Например ако искаме да разберем дали x и y са едновременно истина и perl разбере, че х е лъжа, то той не изчислява y. Затова можем да напишем :

    3>=10 and print "Three is more than ten";

    и това ще работи. Това точно заради отложеното изчисление. В нашия случай 3 е по-голямо от 10 и условието е истина, затова perl проверява и второто условие, което ще доведе до отпечатване на текста. Обратно, ако вместо 3 сложим 11, то при проверката на първото условие perl ще разбере, че е лъжа и оттам, няма как цялото условие да истина. Затова perl ще спре и няма да провери второто условие и низа няма да бъде изпечатан.
    Операторите за низове които ще разгледаме са само два. Първия е оператора за конкатенация, т.е. съединяването на няколко низа в един. Този оператор са записва като точка “ .“. Така, че вместо :

    print "Three", "element", "string";

    можете да напишете :

    print "Three"."element"."string";

    В този случай смисъла не е особенно голям (да не говорим, че втория метод е по – бавен), но понякога наистина ще ви се налага на съединявате низове. Втория оператор е оператора за повторение. Изпълнете следния пример :

    #!/usr/bin/perl
    #ex7.plx
    use warnings;
    print "Think ",x2,"/n";
    
    >perl ex7.plx
    Think Think

    Сега ще научим повече за сравнението на низове. Трябва да знаете, че в някои случаи perl ще успее да сравни два низи и с операторите за сравнение на числа ==. Например сравнението „20“ == „45“, ще проработи, тъй като perl ще конвертира низовете в числа, но „apple“ == „peach“ ще даде предопредително съобщение. Това е така, защото в този случай perl сравнява низовете по азбучен ред. В действителност това е повече от азбучен ред – perl сравнява низовете по ASCII код. Например „Fish“ се намира преди „facon“, защото ASCII кода на „F“ е 70, а на „f“ – 102. Тук е времето да спомена за функцията ord(). Тя връща като резултат ASCII кода на символа, подаден й като аргумент. Да сравняваме низове с ord(), обаче не е особенно удачно за низ с повече от един символ. Затова Perl ни предоставя вградени оператори за това. Ето таблица с тях:

    Оператор за сравнение на низове Еквивалентен оператор за сравнение на числа
    lt <
    gt >
    eq ==
    ne <>
    ge >=
    le <=
    cmp <=>

    С помоща на тези оператори можете да сравнявате низове с лекотата, с която сравнявате и числа. Съвета ми е използвайте операторите за сравнение на низове винаги когато работите с низове. В протичен случай , вашите резултати може да не са такива, каквито сте очаквали. Perl притежава още няколко много важни оператора, за някои от които ще научите по – късно, а тук само ще бъдат изборени :

    Съкратения условен оператор x?y:z.
    Операторите за диапазон … и …Задава диапазон от числа.
    Операторът, който действа като запетая, но с малко по различни свойства =>. Използва се при хешовете.
    Операторите !~ и =~ , които се използват за прилагане на регулярен израз върху низ.
    Малко по – различно действие на наклонената черта \ .
    Операторите >> и << , които известват битовете на едно двоично число вдясно или вляво. Операторът -> , който се използва при референциите и обектното програмиране с Perl.
    Последното за тази глава е пълния ред с приоритетите на операциите :

    Оператори работещи със списъци.Пример за такъв оператор е са скобите.

    Оператора ->
    Повдигане на степен **
    Операторите !, ~, \
    =~, !~
    *, /,%,x
    +, -, .
    <<, >>
    <,>,<=,>=,lt,gt,le,ge
    ==, !=, <=>, eq, ne, cmp
    &
    |, ^
    &&
    ||
    .., ...
    ?:
    , =>
    not
    and
    or, xor

    Не забравайте, че винаги когато искате да промените този ред може да използвате скоби. В следващата глава ще научите повече за променливите и работата със стандартия вход (клавиатурата) и стандартния изход (монитора).

    Оставете коментар