PERL - ПЪРВА ЧАСТ
Основи на Perl. Структура на програмата.
Типове данни - числа,низове.
Конвертиране между числа и низове.


Perl е интерпретаторен език. Това означава, че кода който ще напишете се изпълнява директно, без да е необходимо компилиране, както е при С например. При съвременните езици разликата между компилиран и интерпретиран код не е вече толкова голяма. Както и Java, така и Perl се класифицира като "байтово компилиран" и те са още по - неясни. Интерпретатора на Perl компилира кода до байткод, който може да се изпълни от неговата виртуална машина. След като имаме байткода Perl поема ролята на интерпретатор, като транслира кода за виртуалната машина в реален. Важното тук обаче е, че когато няма да пишете код на Perl няма да има нужда да компилирате и свървате библиотеки, както е в С например. Просто написвате програмата и я пускате, като оставяте интерпретатора на Perl да се грижи за подробностите.
Perl е модулен език. Това означава, че той може да се разширява благодарение на модули. Модула представлява чкод , който може да се вгражда във вашата програма, като по този начин добавя нови възможности. Например в стандартната инсталация идва с множество модули : за работа със сокети, FTP модул, модул за работа с електронна поща и много други. Тъй като Perl се използва от много време и от много хора, то модулите от които може да избирате са значително количество. За да се създаде ред е съдаден сайта www.cpan.org, можете да намерите внушително количество готови за използване модули.
Преди да започнете да пишете на Perl трябва да проверите дали го имате инсталиран на вашият компютър. Отворете конзола и напишете perl -v. Ако получите нещо от вида This is perl и номера на версията, значи при вас всичко е наред и можете да пропуснете следните няколко абзаца. Ако обаче не получите нищо или някаква грешка от вида "Command not found" , то ще се наложи да го инсталирате. Ако работите с Linux е почти 100% сигурно, че вашата дистрибуция има Perl. Например под RedHat можете да инсталирате Perl така:



>rpm -Uvh perl-5.6.0.613.rpm
perl ##################

Цифрите след perl е неговата версия и за вашата дистрибуция, най - вероятно е различен. Разбира се може да свалите и изходния код на Perl от CPAN и да го компилирате. Този начин е възможен и под Windows, но е нещо което трябва да правите само ако имате излишно време за губене. Причината за това изказване е Perl на Active State(www.activestate.com/ActivePerl/download.htm), който има инсталатор, който ще инсталира Perl напълно автоматично. Единственото, което може да се наложи да направите е да асоциирате ръчно разширението на файлове с код на Perl (.plx), към интерпретатора на Perl - perl. След като направите това, вече можете да започнете да пишете програми на Perl. Ето и нашата първа програма :
#!/usr/bin/perl -w
print "Hello world! \n";

Отворете конзола и напишете perl ex1.plx. Ако работите под Linux има и друг по - лесен начин за изпълнение на програмата. Просто в конзолата напишете chmod 755 ex1.plx, като разширението даже може да се пропусне. Това ще проработи само ако интерпретатора на Perl се намира в директорията /usr/bin/perl . Ако не е там променете първия ред или направете връзка към мястото, където е инсталиран Perl. След като изпълните програмата изхода трябва да е нещо такова :

>perl ex1.plx
Hello world!
>

Ако изпълните този код под Windows и Linux ще видите малка разлика. Windows добавя нов ред след изпълнението на всяка Perl програма, за разлика от Linux, който не го прави. И така. това беше вашата първа програма. Как обаче работи тази програма. Първият ред съдържа пътя към perl в една Linux система. Даже да работите под Windows, perl отново ще прочете този ред, за да разбере дали не му задаваме някакви специални опции към него. В нашия случай това е опцията -w ,която казва на perl да включи режима на предупреждения. Общо взето препоръчвам да го оставите включен засега. За версия на Perl 5.6.0 и по - висока използвайте следния синтаксис за включване на предупреждения:

#!/usr/bin/perl
use warnings;
print "Hello world!";

Преди да започнем със същинския код ще ви запозная с коментарите в Perl. Всеки коментер започва със знака диез "#" и може да е на един ред. Perl не поддържа многоредови коментари както Java Script например. Започвам с коментарите, защото те са важна част от документирането на вашата програма. Даже да сте сигурен, че никой друг няма да прочете вашия код, поставяйте коментари заради вас самите. Нокога не се знае, кога ще решите да промените програма писана преди много време, и тогава ще се обедите, че коментарите наистина са полезни. Ето и няколко примера за коментари:
#Брояч на цикъла
$counter = 1;
$counter++; # Увеличаване на брояча


Както и Java Script, в Perl също има запазени думи. И тук употребата им в ролята на променливи не е невъзможна, но не желателна, тъй като води до неясноти в кода. След всяка конструкция е задължително поставянето на точка и запетая, освен когато на Perl е пределно ясно, че конструкцията е завършена. Въпреки това използването на точка и запетая за край на всяка конструкция е препоръчително. В Perl може да групираме няколко конструкции в един блок. Това става като заградим тези конструкции с фигурни скоби.

{ print("Това"); print("е"); print("блок \n");}

Както и Java Script, Perl притежава т.нар. упрваляващи символи. Те са същите както и в Java Script. И тук табулациите и интервалите са незначещи символи. С тяхна помощ обаче, програмата става по - прегледна и лесна за четене и промяна.
Perl може да работи с различни топиве числа, подобно на Java Script. Това са десетични (255), осмични (0377), двоични (0b11111111) и шестнайсетични(0xFF). Ето пример как Perl интерпретира тези числа :

#!/usr/bin/perl
#ex1.plx
use warnings;
print 255,"\n";
print 0377,"\n";
print 0b11111111,"\n";
print 0xFF,"\n";

>perl ex1.plx
255
255
255
255


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


#!/usr/bin/perl
#ex2.plx
use warnings;
print 'Single qouted \t string.\n';
print "Double qouted \tstring.\n";

>perl ex2.plx
Single qouted \t string.\nDouble qouted string.
>


Както виждате в първия стринг управляващите символи не се интерполират, за разлика от втория. Често потребителите на Windows имат проблем с писането на пътя към дадена директория, защото наклонената черта се възприема от Perl като начало на управляващ символ. Затова израза :

$path = "C:\Windows\Desktop";

не е валиден. Ето няколко примера за заобикаляне на този проблем:
#Чрез използване на упр.символи
$path = "C:\\Windows\\Desktop";
#Чрез използване на апострофи
$path = 'C:\Windows\Desktop';
#Чрез вътрешно преобразуване, което
#версиите на Perl за Windows
#правят автоматично
$path = "C:/Windows/Desktop";

Perl разполага с още два начина за затваряне на низове : чрез кавичко - подобни операции и вмъкнати документи.
Кавичко - подобните операции, работят точно така както и нормалните кавички и апострофи с тази разлика, че няма нужда да променяте интерпретацията на кавичките или апострофите вътре в низа. За кавички се използва операцията qq/"String"/, а за апострофи q/"String"/ . Тук обаче отново възникава проблема с наклонените черти. За щастие Perl ни позволява да го заобиколим , като за разделител може да изолзвате който си поискате знак. В този смисъл следните операции са напълно валидни : qq {}, qq||,q<>,qq[].
Вмъкнатите документи се използват, когато низа, който искате да вмъкнете, наистина е доста голям. Ето пример за вмъкнат документ :
#!/usr/bin/perl
use warnings;
print<<EOF;

Това е голямо количество текст,
което ще се покаже точно така,
както е написано (освен ако
имате проблем с кирилицата
под конзола).

EOF



Вмъкнатия документ задължително трябва да започва с << и след това етикет. Името на етикета може да бъде каквото си поискате, но задължително трябва да следва непосредсвено след << (и това е последния текст на кирилица в примерите за Perl). По подразбиране вмъкнатия документ действа като низ в кавички. Ако искате да действа като низ в апострофи, просто го заградете в апострфи.
Интерпретатора на Perl работи числа и низове по един и същи начин, и когато се наложи ги конвертира абсолютно самостоятелно. Например ако имате низ "5" и го умножите с 5, то резулата ще е 25. Това обаче не важи за осмични, двоични и шестнайсетични числа в низове. В този случай е необходимо ръчно да конвертирате числата чрез функциите hex() (за конвертиране на шестнайсетични числа) и oct() (за осмични). Тези функции ще четат низа докато намират валидни стойности. Например hex(FFG), ще конвертира низа до "G". Освен това, както може би забелязахте, те не се нуждаят от префиксите "0x" и "0", за да работят. За съжаление няма функция bin(), за конвертиране на двоични числа. Perl обаче ни позволява да използваме oct() за тази цел, просто в този случай префика за двоично число "0b" не трябва да се пропуска. Например print oct(0b111) извежда 8.
Данните, които показах в тази глава се наричат скалари. Освен тях в Perl има още два типа данни - списъци и хешове. Повече за тях с следващата глава.


източник:www.mgu.bg


/ Трябва да сте регистриран за да напишете коментар /