SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
Курс по
програмиране на Perl
Въведение в PerlВъведение в Perl
Автор: Красимир Беров, Превод: Теодора Берова
I-can.eu С любезното съдействие на Chain Solutions
Съдържание
1. Кратка история
2. Основни понятия. Интерпретиран (скриптов) или
компилиран?
3. Виртуална машина и платформена независимост
4. Защо Perl?
5. CPAN и PPM
6. Инсталиране под (Windows/Unix)
7. Основен синтаксис
8. Вградени оператори и функции
9. Hello World (Здравей Свят)
10.Източници
Кратка история
● 1986/7 – Perl е изобретен от Лари Уол в Лабораторията
по реактивни двигатели в NASA.
● 1987-Dec-18 Perl 1 представя Perl пред света.
● 1988-Jun-05 Perl 2 въвежда пакета с регулярни изрази
на Хенри Спенсър.
● 1989-Oct-18 Perl 3 вече обработва двоични данни.
● 1991-Mar-21 Perl 4 представя първата си книга – Camel
book.
● 1994-Oct-17 Perl 5 въвежда всичко останало (ООП,
нишки...), включително и възможността да се въвежда
всичко останало.
● 2014-05-27 Издание на Perl 5.20 от Ricardo Signes.
Основни понятия
● P.E.R.L (Pathologically Eclectick Rubish Lister –
патологично-еклектично средство за извеждане
на безсмислици)
или
P.E.R.L (Practical Extraction and Report Language
– практичен език за извличане и отчети)
● Езици за програмиране
● Интерпретирани и компилирани езици
Основни понятия
● Езици за програмиране
● C/C++
● Java
● Tcl
● Perl
● PHP
● Ruby
● JavaScript
Основни понятия
● Интерпретиран или компилиран език е Perl?
Основни понятия
● Интерпретиран?
– Един интерпретиран език се нуждае от програма,
наречена интерпретатор, която да обработва
изходния код всеки път, когато стартирате програмата.
– Интерпретаторът превръща изходния код в машинен
код, за да го разчете машината.
– Изходният код е за хора.
● Повече информация:
– perlhack/Принципи на работата на интерпретатора
– perlguts/Компилираният код
● Интерпретирани езици: Perl, PHP, Python, Ruby...
Основни понятия
● Компилиран?
– Компилираният език използва компилатор, който
обработва кода еднократно.
– След това, вие можете да пускате получения
машинен код много пъти на много машини, без да е
нужно да се компилира отново.
● Компилирани езици: C,C++, D, Delphy,..
● Байтово компилирани езици: Java, Python, Perl
(Parrot-Perl6) :)...
● Байтовият код също е независим от машината
– толкова е преносим, колкото и самия изходен код
(виж perlcompile, B::Bytecode).
Виртуална машина
● Виртуална машина == perl като
програма/интерпретатор
● Работата на интерпретатора се дели на два
основни етапа:
– компилиране на кода до състояние удобно за
вътрешна употреба от интерпретатора
(байткод)
– изпълнение на кода.
● Виртуалната машина на Perl 6 – Parrot, е по-
скоро като Java и .NET
Виртуална машина
● Кратък преглед на етапите на работа на perl
– Компилиране
● Стартиране
● Обработка на изходния/програмния код
(синтактичен анализ)
● Компилация и оптимизация
– Изпълнение
● Изпълняване/Работа
● Обработка на изключения
Платформена независимост
● Виртуалната машина на Perl ни освобождава от
необходимостта да се съобразяваме с
особеностите на Операционната Система (ОС)
● Високо ниво на независимост
● Един и същ изходен код върви под различни
платформи:
use File::Path;use File::Path;
my $dest ='/some/path/in/main/drive'my $dest ='/some/path/in/main/drive'
eval { mkpath($dest) };eval { mkpath($dest) };
if ($@) {if ($@) {
print "Couldn't create $dest:$/$@$/"print "Couldn't create $dest:$/$@$/"
. "... exiting.$/";. "... exiting.$/";
exit;exit;
}}
Защо Perl?
● Лесен за изучаване
– Научаването на малко Perl може да ви заведе
по-далече, отколкото предполагате.
– По-лесен е за хората да го пишат, отколкото за
компютрите да го разбират.
– Синтаксисът на езика много повече наподобява
човешки език.
open(FILE) or die $!;open(FILE) or die $!;
die $! unless open(FILE);die $! unless open(FILE);
die $! if not open(FILE);die $! if not open(FILE);
Защо Perl?
● Преносим
– Perl е пренесен на почти всички съвременни
операционни системи, като Windows, Mac OS X,
Linux, Unix (където е създаден) и мнго други...
● Език от много високо ниво
– Не ви кара да мислите за неясни неща, като
разпределяне на паметта, процесор (CPU) и др.
Защо Perl?
● „Говори“ текста (във всякакво кодиране).
● „Мисли“ за файловете от гледна точка на редове и
изречения (по подразбиране) или както сте му
казали да го прави.
● Има вградени мощни регулярни изрази.
if( $lines[$_] =~ /^--s*?[(w+)]/ ){if( $lines[$_] =~ /^--s*?[(w+)]/ ){
$key = $1;$key = $1;
}}
ВНИМАНИЕ!!!
Не пишете мърляв код, само защото ви е по-лесно. В повечето
случаи вашият код ще живее по-дълго, отколкото очаквате, и се
получава грозно!!!
Защо Perl?
● И накрая,
– Защото така искате
– Защото вашият шеф иска така :)...
CPAN и PPM
● CPAN (Comprehensive Perl Archive Network) е най-
големият източник на многократно използваем и
стандартизиран perl-код.
Използвайте програмата cpan, за да инсталирате,
компилирате и обновявате модули, ако имате C
компилатор.
● PPM (Perl Package Manager) е инструмент на ActiveState
за инсталиране на прекомпилирани perl-модули.
Това улеснява работата по намирането, инсталирането,
обновяването и премахването на Perl пакети под
Windows. Използвайте програмата ppm, която върви с
ActivePerl.
Инсталиране (Windows/Unix)
– Linux/Unix
● Няма нужда – вече го имате инсталиран.
● Използвайте perlbrew за да инсталирате ваш собствен
Perl.
● Използвайте ваш собствен ActivePerl.
– Windows
● Свалете си perl за вашата архитектура от:
http://strawberryperl.com/
или от:
http://www.activestate.com/activeperl/downloads
● Щракнете двукратно върху
strawberry-perl-5.XX.X.X-XXbit.msi
или
ActivePerl-5.XX.X.XXXX-....msi
1.Next, next, mm.. next, yes, next.... :D
Основи на синтаксиса
● Един Perl скрипт или програма се състои от
една или повече конструкции.
● Тези конструкции са записани в скрипта по
разбираем и прост начин.
● Не е необходимо да съдържат функцията
main() или нещо от тоя род.
Основи на синтаксиса
● Конструкциите в Perl завършват с точка и
запетая (;)
#this is a fully functional program#this is a fully functional program
print "Hello, world";print "Hello, world";
Основи на синтаксиса
● Коментарите започват със символа диез (#) и
важат до края на реда.
#this is a fully functional program with comment#this is a fully functional program with comment
print "Hello, world";print "Hello, world";
Основи на синтаксиса
● Паузите са без значение...
printprint
"Hello, world""Hello, world"
;;
Основи на синтаксиса
● ...освен когато са вътре в низ с кавички (“...”)
# this would print with a line-break in the middle# this would print with a line-break in the middle
print "Helloprint "Hello
world";world";
Основи на синтаксиса
● Двойни или единични кавички могат да се
използват около литерални (буквални) низове.
print "Hello, world";print "Hello, world";
print 'Hello, world';print 'Hello, world';
Основи на синтаксиса
● Забележка: Променливи и специални знаци -
като знака за нов ред (n), могат да се
обграждат само с двойни кавички
print "Hello, $namen"; # works fineprint "Hello, $namen"; # works fine
print 'Hello, $namen'; # prints $namen literallyprint 'Hello, $namen'; # prints $namen literally
Основи на синтаксиса
● Числата не се нуждаят от кавички
print 42;print 42;
Основи на синтаксиса
● Можете да използвате скоби за аргументите
на функциите, или пък да пропуснете – това е
въпрос на личен стил.
● Изискват се само когато може да възникнат
проблеми с приоритетите (кой израз се
изпълнява по-напред).
print("Hello, worldn");print("Hello, worldn");
print "Hello, worldn";print "Hello, worldn";
Вградени оператори и функции
● Perl върви с богат избор от вградени
функции.
● Пълен списък с функциите на:
http://perldoc.perl.org/perlfunc.html
● Можете да прочетете за всяка отделна
функция и като въведете на командния ред
следното: perldoc -f functionname.
● Пълната документация на операторите:
http://perldoc.perl.org/perlop.html
● Ето някои от най-използваните.
Вградени оператори и функции
● Математически оператори
+ събиране
- изваждане
* умножение
/ деление
Вградени оператори и функции
● Сравнение на числа (Numeric comparison)
== равенство
!= неравенство
< по-малко
> по-голямо
<= по-малко или равно
>= по-голямо или равно
Вградени оператори и функции
● Сравнение на низове (String comparison)
eq равенство
ne неравенство
lt по-малко
gt по-голямо
le по-малко или равно
ge по-голямо или равно
● Защо има отделни сравнения за числа и за низове?
– Perl няма специални типове променливи.
– perl трябва да знае как ще сортира – по числов или по
азбучен ред (по-точно – според кодовата таблица).
Вградени оператори и функции
● Булева логика
&& and (и)
|| or (или)
! not (не)
● and, or и not не са просто описания на операторите
Те са:
– операторите сами по себе си
– по-читаеми и ясни от операторите в C-стил
– с по-нисък приоритет от && и „приятели“
● Виж perlop
Вградени оператори и функции
● Някои други оператори:
= присвояване
. конкатенация (съединяване на няколко
низа в един)
x оператор за повторение (умножение) на
низ
.. оператор за поредици (създава списък от
числа)
Вградени оператори и функции
● Много оператори могат да се комбинират със
знака =
$a += 1; # same as $a = $a + 1$a += 1; # same as $a = $a + 1
$a -= 1; # same as $a = $a - 1$a -= 1; # same as $a = $a - 1
$a .= "n"; # same as $a = $a . "n";$a .= "n"; # same as $a = $a . "n";
Hello World
#!/usr/bin/perl#!/usr/bin/perl
use warnings;use warnings;
use strict;use strict;
use utf8;use utf8;
print 'Hi'.$/;print 'Hi'.$/;
Т.нар. Shebang-ред.
Незадължителен под
Windows
Прагма за контролиране на
незадължителни предупреждения
Прагма за ограничаване на опасни
конструкции
Прагма за включване/изключване
поддръжката на на UTF-8 в изходния
код (Обичате уникод, нали така?).
Отпечатва низ или списък от
низове на екрана.
Буквален низ (скаларна
стойност).
Разделителят за входен запис – нов ред
по подразбиране. Променя идеята на Perl
за това какво е ред.
Вижте това знание приложено в практиката: http://git.io/1JIGsA
Източници
● Perl CORE documentation
– perlhist, perlintro, perldata, perlhack, perlguts,
perlvar, perlcompile, etc.
● „Beginning Perl“ by Simon Cosens with Peter
Wainwright (Wrox Press Ltd. 2000)
http://www.perl.org/books/beginning-perl/
● Modern Perl by chromatic
http://www.onyxneon.com/books/modern_perl/
● See also: books.perl.org
Въведение в Perl
Въпроси?
С любезното съдействие на http://chainsolutions.net/

Más contenido relacionado

La actualidad más candente

Училищен курс по програмиране на C# (2013/2014), занятие №2
Училищен курс по програмиране на C# (2013/2014), занятие №2Училищен курс по програмиране на C# (2013/2014), занятие №2
Училищен курс по програмиране на C# (2013/2014), занятие №2DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №8
Училищен курс по програмиране на C# (2013/2014), занятие №8Училищен курс по програмиране на C# (2013/2014), занятие №8
Училищен курс по програмиране на C# (2013/2014), занятие №8DAVID Academy
 
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №4
Училищен курс по програмиране на C# (2013/2014), занятие №4Училищен курс по програмиране на C# (2013/2014), занятие №4
Училищен курс по програмиране на C# (2013/2014), занятие №4DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №12
Училищен курс по програмиране на C# (2013/2014), занятие №12Училищен курс по програмиране на C# (2013/2014), занятие №12
Училищен курс по програмиране на C# (2013/2014), занятие №12DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №7
Училищен курс по програмиране на C# (2013/2014), занятие №7Училищен курс по програмиране на C# (2013/2014), занятие №7
Училищен курс по програмиране на C# (2013/2014), занятие №7DAVID Academy
 
Курс по уеб програмиране (2015), занятие №3 - JavaScript (част 1/2)
Курс по уеб програмиране (2015), занятие №3 - JavaScript (част 1/2)Курс по уеб програмиране (2015), занятие №3 - JavaScript (част 1/2)
Курс по уеб програмиране (2015), занятие №3 - JavaScript (част 1/2)DAVID Academy
 
Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#
Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#
Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#DAVID Academy
 
Курс по програмиране на C# 2013 - 2. Конзолен вход и изход. Условни преходи. ...
Курс по програмиране на C# 2013 - 2. Конзолен вход и изход. Условни преходи. ...Курс по програмиране на C# 2013 - 2. Конзолен вход и изход. Условни преходи. ...
Курс по програмиране на C# 2013 - 2. Конзолен вход и изход. Условни преходи. ...DAVID Academy
 
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...DAVID Academy
 
Основни структури за управление на изчислителния процес
Основни структури за управление на изчислителния процесОсновни структури за управление на изчислителния процес
Основни структури за управление на изчислителния процесAtelier for robotics
 
Училищен курс по програмиране на C# (2013/2014), занятие №9
Училищен курс по програмиране на C# (2013/2014), занятие №9Училищен курс по програмиране на C# (2013/2014), занятие №9
Училищен курс по програмиране на C# (2013/2014), занятие №9DAVID Academy
 
Курс по програмиране на C# 2013 - 8. Полиморфизъм. Абстракция. Шаблони. Вград...
Курс по програмиране на C# 2013 - 8. Полиморфизъм. Абстракция. Шаблони. Вград...Курс по програмиране на C# 2013 - 8. Полиморфизъм. Абстракция. Шаблони. Вград...
Курс по програмиране на C# 2013 - 8. Полиморфизъм. Абстракция. Шаблони. Вград...DAVID Academy
 

La actualidad más candente (13)

Училищен курс по програмиране на C# (2013/2014), занятие №2
Училищен курс по програмиране на C# (2013/2014), занятие №2Училищен курс по програмиране на C# (2013/2014), занятие №2
Училищен курс по програмиране на C# (2013/2014), занятие №2
 
Училищен курс по програмиране на C# (2013/2014), занятие №8
Училищен курс по програмиране на C# (2013/2014), занятие №8Училищен курс по програмиране на C# (2013/2014), занятие №8
Училищен курс по програмиране на C# (2013/2014), занятие №8
 
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)
 
Училищен курс по програмиране на C# (2013/2014), занятие №4
Училищен курс по програмиране на C# (2013/2014), занятие №4Училищен курс по програмиране на C# (2013/2014), занятие №4
Училищен курс по програмиране на C# (2013/2014), занятие №4
 
Училищен курс по програмиране на C# (2013/2014), занятие №12
Училищен курс по програмиране на C# (2013/2014), занятие №12Училищен курс по програмиране на C# (2013/2014), занятие №12
Училищен курс по програмиране на C# (2013/2014), занятие №12
 
Училищен курс по програмиране на C# (2013/2014), занятие №7
Училищен курс по програмиране на C# (2013/2014), занятие №7Училищен курс по програмиране на C# (2013/2014), занятие №7
Училищен курс по програмиране на C# (2013/2014), занятие №7
 
Курс по уеб програмиране (2015), занятие №3 - JavaScript (част 1/2)
Курс по уеб програмиране (2015), занятие №3 - JavaScript (част 1/2)Курс по уеб програмиране (2015), занятие №3 - JavaScript (част 1/2)
Курс по уеб програмиране (2015), занятие №3 - JavaScript (част 1/2)
 
Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#
Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#
Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#
 
Курс по програмиране на C# 2013 - 2. Конзолен вход и изход. Условни преходи. ...
Курс по програмиране на C# 2013 - 2. Конзолен вход и изход. Условни преходи. ...Курс по програмиране на C# 2013 - 2. Конзолен вход и изход. Условни преходи. ...
Курс по програмиране на C# 2013 - 2. Конзолен вход и изход. Условни преходи. ...
 
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...
 
Основни структури за управление на изчислителния процес
Основни структури за управление на изчислителния процесОсновни структури за управление на изчислителния процес
Основни структури за управление на изчислителния процес
 
Училищен курс по програмиране на C# (2013/2014), занятие №9
Училищен курс по програмиране на C# (2013/2014), занятие №9Училищен курс по програмиране на C# (2013/2014), занятие №9
Училищен курс по програмиране на C# (2013/2014), занятие №9
 
Курс по програмиране на C# 2013 - 8. Полиморфизъм. Абстракция. Шаблони. Вград...
Курс по програмиране на C# 2013 - 8. Полиморфизъм. Абстракция. Шаблони. Вград...Курс по програмиране на C# 2013 - 8. Полиморфизъм. Абстракция. Шаблони. Вград...
Курс по програмиране на C# 2013 - 8. Полиморфизъм. Абстракция. Шаблони. Вград...
 

Destacado

Sample ch10 corr-maurer_netty_december03
Sample ch10 corr-maurer_netty_december03Sample ch10 corr-maurer_netty_december03
Sample ch10 corr-maurer_netty_december03Milena Stefanova
 
MS Excel - Управленски решения
MS Excel - Управленски решенияMS Excel - Управленски решения
MS Excel - Управленски решенияTrainSoft
 
Func mattrig
Func mattrigFunc mattrig
Func mattrignatpit
 
Func stat
Func statFunc stat
Func statnatpit
 
SESEC SAT инструмент за самооценка
SESEC SAT инструмент за самооценкаSESEC SAT инструмент за самооценка
SESEC SAT инструмент за самооценкаDITF Denkendorf
 
John steinbeck teamwork_bg X607
John steinbeck teamwork_bg X607John steinbeck teamwork_bg X607
John steinbeck teamwork_bg X607X607
 
Excel - формули и функции
Excel - формули и функцииExcel - формули и функции
Excel - формули и функцииvenkoandonov
 
Бизнес математика с Excel 2010
Бизнес математика с Excel 2010Бизнес математика с Excel 2010
Бизнес математика с Excel 2010InnovationManagementPU
 
SEO курс, лекция 13 - SEO инструментариум
SEO курс, лекция 13 - SEO инструментариумSEO курс, лекция 13 - SEO инструментариум
SEO курс, лекция 13 - SEO инструментариумLily Grozeva
 
MS Excel преговор
MS Excel преговорMS Excel преговор
MS Excel преговорnad_and
 
специализирани функции (Date, if, today
специализирани функции (Date, if, todayспециализирани функции (Date, if, today
специализирани функции (Date, if, todayIrena Miteva
 
5S basic training ppt
5S basic training ppt5S basic training ppt
5S basic training pptbeskidek
 
Текстова релевантност
Текстова релевантностТекстова релевантност
Текстова релевантностNetpeakBG
 
MS Excel 2003 - Търсене и замяна на данни; настройка за печат
MS Excel 2003 - Търсене и замяна на данни; настройка за печатMS Excel 2003 - Търсене и замяна на данни; настройка за печат
MS Excel 2003 - Търсене и замяна на данни; настройка за печатnad_and
 

Destacado (20)

Scalar data types
Scalar data typesScalar data types
Scalar data types
 
стенд 5 s v2
стенд 5 s v2стенд 5 s v2
стенд 5 s v2
 
Sample ch10 corr-maurer_netty_december03
Sample ch10 corr-maurer_netty_december03Sample ch10 corr-maurer_netty_december03
Sample ch10 corr-maurer_netty_december03
 
Uroc5 7klas
Uroc5 7klasUroc5 7klas
Uroc5 7klas
 
MS Excel - Управленски решения
MS Excel - Управленски решенияMS Excel - Управленски решения
MS Excel - Управленски решения
 
Func mattrig
Func mattrigFunc mattrig
Func mattrig
 
Func stat
Func statFunc stat
Func stat
 
What If Analysis
What If AnalysisWhat If Analysis
What If Analysis
 
SESEC SAT инструмент за самооценка
SESEC SAT инструмент за самооценкаSESEC SAT инструмент за самооценка
SESEC SAT инструмент за самооценка
 
John steinbeck teamwork_bg X607
John steinbeck teamwork_bg X607John steinbeck teamwork_bg X607
John steinbeck teamwork_bg X607
 
Nested Funcs
Nested FuncsNested Funcs
Nested Funcs
 
Uroc6 et
Uroc6 etUroc6 et
Uroc6 et
 
Excel - формули и функции
Excel - формули и функцииExcel - формули и функции
Excel - формули и функции
 
Бизнес математика с Excel 2010
Бизнес математика с Excel 2010Бизнес математика с Excel 2010
Бизнес математика с Excel 2010
 
SEO курс, лекция 13 - SEO инструментариум
SEO курс, лекция 13 - SEO инструментариумSEO курс, лекция 13 - SEO инструментариум
SEO курс, лекция 13 - SEO инструментариум
 
MS Excel преговор
MS Excel преговорMS Excel преговор
MS Excel преговор
 
специализирани функции (Date, if, today
специализирани функции (Date, if, todayспециализирани функции (Date, if, today
специализирани функции (Date, if, today
 
5S basic training ppt
5S basic training ppt5S basic training ppt
5S basic training ppt
 
Текстова релевантност
Текстова релевантностТекстова релевантност
Текстова релевантност
 
MS Excel 2003 - Търсене и замяна на данни; настройка за печат
MS Excel 2003 - Търсене и замяна на данни; настройка за печатMS Excel 2003 - Търсене и замяна на данни; настройка за печат
MS Excel 2003 - Търсене и замяна на данни; настройка за печат
 

Similar a Въведение в Perl

Да заложим на Go
Да заложим на GoДа заложим на Go
Да заложим на GoZhivko Angelov
 
BARS - Regular Expressions - Svetlin Nakov, George Penkov
BARS - Regular Expressions - Svetlin Nakov, George PenkovBARS - Regular Expressions - Svetlin Nakov, George Penkov
BARS - Regular Expressions - Svetlin Nakov, George PenkovSvetlin Nakov
 
Redis by Svilen Ivanov
Redis by Svilen IvanovRedis by Svilen Ivanov
Redis by Svilen Ivanovit-tour
 
Nakov - RDBMS Systems - Intro
Nakov - RDBMS Systems - IntroNakov - RDBMS Systems - Intro
Nakov - RDBMS Systems - IntroSvetlin Nakov
 
Демо урок по програмиране със Светлин Наков
Демо урок по програмиране със Светлин НаковДемо урок по програмиране със Светлин Наков
Демо урок по програмиране със Светлин НаковSvetlin Nakov
 
Курс по програмиране на C# 2013 - 7. Свойства. Индексатори. Наследяване. Изкл...
Курс по програмиране на C# 2013 - 7. Свойства. Индексатори. Наследяване. Изкл...Курс по програмиране на C# 2013 - 7. Свойства. Индексатори. Наследяване. Изкл...
Курс по програмиране на C# 2013 - 7. Свойства. Индексатори. Наследяване. Изкл...DAVID Academy
 
език и среда за програмиране
език и среда за програмиранеезик и среда за програмиране
език и среда за програмиранеmtrad
 
Училищен курс по програмиране на C# (2013/2014), занятие №1
Училищен курс по програмиране на C# (2013/2014), занятие №1Училищен курс по програмиране на C# (2013/2014), занятие №1
Училищен курс по програмиране на C# (2013/2014), занятие №1DAVID Academy
 
Програмиране на малки микропроцесорни системи
Програмиране на малки микропроцесорни системиПрограмиране на малки микропроцесорни системи
Програмиране на малки микропроцесорни системиNeven Boyanov
 
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...DAVID Academy
 
9 pentium pentium pro
9 pentium pentium pro9 pentium pentium pro
9 pentium pentium prodnaidenowa
 

Similar a Въведение в Perl (20)

Why do we need a language like go?
Why do we need a language like go?Why do we need a language like go?
Why do we need a language like go?
 
Да заложим на Go
Да заложим на GoДа заложим на Go
Да заложим на Go
 
BARS - Regular Expressions - Svetlin Nakov, George Penkov
BARS - Regular Expressions - Svetlin Nakov, George PenkovBARS - Regular Expressions - Svetlin Nakov, George Penkov
BARS - Regular Expressions - Svetlin Nakov, George Penkov
 
Rust
RustRust
Rust
 
Redis by Svilen Ivanov
Redis by Svilen IvanovRedis by Svilen Ivanov
Redis by Svilen Ivanov
 
Nakov - RDBMS Systems - Intro
Nakov - RDBMS Systems - IntroNakov - RDBMS Systems - Intro
Nakov - RDBMS Systems - Intro
 
B1 t1 php_basics
B1 t1 php_basicsB1 t1 php_basics
B1 t1 php_basics
 
B1 t1 php_basics
B1 t1 php_basicsB1 t1 php_basics
B1 t1 php_basics
 
Демо урок по програмиране със Светлин Наков
Демо урок по програмиране със Светлин НаковДемо урок по програмиране със Светлин Наков
Демо урок по програмиране със Светлин Наков
 
Java kurs
Java kursJava kurs
Java kurs
 
J-Unit тестове
J-Unit тестовеJ-Unit тестове
J-Unit тестове
 
Курс по програмиране на C# 2013 - 7. Свойства. Индексатори. Наследяване. Изкл...
Курс по програмиране на C# 2013 - 7. Свойства. Индексатори. Наследяване. Изкл...Курс по програмиране на C# 2013 - 7. Свойства. Индексатори. Наследяване. Изкл...
Курс по програмиране на C# 2013 - 7. Свойства. Индексатори. Наследяване. Изкл...
 
C++ OpenFest 2015
C++ OpenFest 2015C++ OpenFest 2015
C++ OpenFest 2015
 
Programirane i organizaciq
Programirane i organizaciqProgramirane i organizaciq
Programirane i organizaciq
 
език и среда за програмиране
език и среда за програмиранеезик и среда за програмиране
език и среда за програмиране
 
Cross compiling
Cross compilingCross compiling
Cross compiling
 
Училищен курс по програмиране на C# (2013/2014), занятие №1
Училищен курс по програмиране на C# (2013/2014), занятие №1Училищен курс по програмиране на C# (2013/2014), занятие №1
Училищен курс по програмиране на C# (2013/2014), занятие №1
 
Програмиране на малки микропроцесорни системи
Програмиране на малки микропроцесорни системиПрограмиране на малки микропроцесорни системи
Програмиране на малки микропроцесорни системи
 
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...
 
9 pentium pentium pro
9 pentium pentium pro9 pentium pentium pro
9 pentium pentium pro
 

Más de Krasimir Berov (Красимир Беров) (11)

System Programming and Administration
System Programming and AdministrationSystem Programming and Administration
System Programming and Administration
 
Network programming
Network programmingNetwork programming
Network programming
 
Processes and threads
Processes and threadsProcesses and threads
Processes and threads
 
Working with databases
Working with databasesWorking with databases
Working with databases
 
Working with text, Regular expressions
Working with text, Regular expressionsWorking with text, Regular expressions
Working with text, Regular expressions
 
Subroutines
SubroutinesSubroutines
Subroutines
 
IO Streams, Files and Directories
IO Streams, Files and DirectoriesIO Streams, Files and Directories
IO Streams, Files and Directories
 
Syntax
SyntaxSyntax
Syntax
 
Hashes
HashesHashes
Hashes
 
Lists and arrays
Lists and arraysLists and arrays
Lists and arrays
 
Introduction to Perl
Introduction to PerlIntroduction to Perl
Introduction to Perl
 

Въведение в Perl

  • 1. Курс по програмиране на Perl Въведение в PerlВъведение в Perl Автор: Красимир Беров, Превод: Теодора Берова I-can.eu С любезното съдействие на Chain Solutions
  • 2. Съдържание 1. Кратка история 2. Основни понятия. Интерпретиран (скриптов) или компилиран? 3. Виртуална машина и платформена независимост 4. Защо Perl? 5. CPAN и PPM 6. Инсталиране под (Windows/Unix) 7. Основен синтаксис 8. Вградени оператори и функции 9. Hello World (Здравей Свят) 10.Източници
  • 3. Кратка история ● 1986/7 – Perl е изобретен от Лари Уол в Лабораторията по реактивни двигатели в NASA. ● 1987-Dec-18 Perl 1 представя Perl пред света. ● 1988-Jun-05 Perl 2 въвежда пакета с регулярни изрази на Хенри Спенсър. ● 1989-Oct-18 Perl 3 вече обработва двоични данни. ● 1991-Mar-21 Perl 4 представя първата си книга – Camel book. ● 1994-Oct-17 Perl 5 въвежда всичко останало (ООП, нишки...), включително и възможността да се въвежда всичко останало. ● 2014-05-27 Издание на Perl 5.20 от Ricardo Signes.
  • 4. Основни понятия ● P.E.R.L (Pathologically Eclectick Rubish Lister – патологично-еклектично средство за извеждане на безсмислици) или P.E.R.L (Practical Extraction and Report Language – практичен език за извличане и отчети) ● Езици за програмиране ● Интерпретирани и компилирани езици
  • 5. Основни понятия ● Езици за програмиране ● C/C++ ● Java ● Tcl ● Perl ● PHP ● Ruby ● JavaScript
  • 6. Основни понятия ● Интерпретиран или компилиран език е Perl?
  • 7. Основни понятия ● Интерпретиран? – Един интерпретиран език се нуждае от програма, наречена интерпретатор, която да обработва изходния код всеки път, когато стартирате програмата. – Интерпретаторът превръща изходния код в машинен код, за да го разчете машината. – Изходният код е за хора. ● Повече информация: – perlhack/Принципи на работата на интерпретатора – perlguts/Компилираният код ● Интерпретирани езици: Perl, PHP, Python, Ruby...
  • 8. Основни понятия ● Компилиран? – Компилираният език използва компилатор, който обработва кода еднократно. – След това, вие можете да пускате получения машинен код много пъти на много машини, без да е нужно да се компилира отново. ● Компилирани езици: C,C++, D, Delphy,.. ● Байтово компилирани езици: Java, Python, Perl (Parrot-Perl6) :)... ● Байтовият код също е независим от машината – толкова е преносим, колкото и самия изходен код (виж perlcompile, B::Bytecode).
  • 9. Виртуална машина ● Виртуална машина == perl като програма/интерпретатор ● Работата на интерпретатора се дели на два основни етапа: – компилиране на кода до състояние удобно за вътрешна употреба от интерпретатора (байткод) – изпълнение на кода. ● Виртуалната машина на Perl 6 – Parrot, е по- скоро като Java и .NET
  • 10. Виртуална машина ● Кратък преглед на етапите на работа на perl – Компилиране ● Стартиране ● Обработка на изходния/програмния код (синтактичен анализ) ● Компилация и оптимизация – Изпълнение ● Изпълняване/Работа ● Обработка на изключения
  • 11. Платформена независимост ● Виртуалната машина на Perl ни освобождава от необходимостта да се съобразяваме с особеностите на Операционната Система (ОС) ● Високо ниво на независимост ● Един и същ изходен код върви под различни платформи: use File::Path;use File::Path; my $dest ='/some/path/in/main/drive'my $dest ='/some/path/in/main/drive' eval { mkpath($dest) };eval { mkpath($dest) }; if ($@) {if ($@) { print "Couldn't create $dest:$/$@$/"print "Couldn't create $dest:$/$@$/" . "... exiting.$/";. "... exiting.$/"; exit;exit; }}
  • 12. Защо Perl? ● Лесен за изучаване – Научаването на малко Perl може да ви заведе по-далече, отколкото предполагате. – По-лесен е за хората да го пишат, отколкото за компютрите да го разбират. – Синтаксисът на езика много повече наподобява човешки език. open(FILE) or die $!;open(FILE) or die $!; die $! unless open(FILE);die $! unless open(FILE); die $! if not open(FILE);die $! if not open(FILE);
  • 13. Защо Perl? ● Преносим – Perl е пренесен на почти всички съвременни операционни системи, като Windows, Mac OS X, Linux, Unix (където е създаден) и мнго други... ● Език от много високо ниво – Не ви кара да мислите за неясни неща, като разпределяне на паметта, процесор (CPU) и др.
  • 14. Защо Perl? ● „Говори“ текста (във всякакво кодиране). ● „Мисли“ за файловете от гледна точка на редове и изречения (по подразбиране) или както сте му казали да го прави. ● Има вградени мощни регулярни изрази. if( $lines[$_] =~ /^--s*?[(w+)]/ ){if( $lines[$_] =~ /^--s*?[(w+)]/ ){ $key = $1;$key = $1; }} ВНИМАНИЕ!!! Не пишете мърляв код, само защото ви е по-лесно. В повечето случаи вашият код ще живее по-дълго, отколкото очаквате, и се получава грозно!!!
  • 15. Защо Perl? ● И накрая, – Защото така искате – Защото вашият шеф иска така :)...
  • 16. CPAN и PPM ● CPAN (Comprehensive Perl Archive Network) е най- големият източник на многократно използваем и стандартизиран perl-код. Използвайте програмата cpan, за да инсталирате, компилирате и обновявате модули, ако имате C компилатор. ● PPM (Perl Package Manager) е инструмент на ActiveState за инсталиране на прекомпилирани perl-модули. Това улеснява работата по намирането, инсталирането, обновяването и премахването на Perl пакети под Windows. Използвайте програмата ppm, която върви с ActivePerl.
  • 17. Инсталиране (Windows/Unix) – Linux/Unix ● Няма нужда – вече го имате инсталиран. ● Използвайте perlbrew за да инсталирате ваш собствен Perl. ● Използвайте ваш собствен ActivePerl. – Windows ● Свалете си perl за вашата архитектура от: http://strawberryperl.com/ или от: http://www.activestate.com/activeperl/downloads ● Щракнете двукратно върху strawberry-perl-5.XX.X.X-XXbit.msi или ActivePerl-5.XX.X.XXXX-....msi 1.Next, next, mm.. next, yes, next.... :D
  • 18. Основи на синтаксиса ● Един Perl скрипт или програма се състои от една или повече конструкции. ● Тези конструкции са записани в скрипта по разбираем и прост начин. ● Не е необходимо да съдържат функцията main() или нещо от тоя род.
  • 19. Основи на синтаксиса ● Конструкциите в Perl завършват с точка и запетая (;) #this is a fully functional program#this is a fully functional program print "Hello, world";print "Hello, world";
  • 20. Основи на синтаксиса ● Коментарите започват със символа диез (#) и важат до края на реда. #this is a fully functional program with comment#this is a fully functional program with comment print "Hello, world";print "Hello, world";
  • 21. Основи на синтаксиса ● Паузите са без значение... printprint "Hello, world""Hello, world" ;;
  • 22. Основи на синтаксиса ● ...освен когато са вътре в низ с кавички (“...”) # this would print with a line-break in the middle# this would print with a line-break in the middle print "Helloprint "Hello world";world";
  • 23. Основи на синтаксиса ● Двойни или единични кавички могат да се използват около литерални (буквални) низове. print "Hello, world";print "Hello, world"; print 'Hello, world';print 'Hello, world';
  • 24. Основи на синтаксиса ● Забележка: Променливи и специални знаци - като знака за нов ред (n), могат да се обграждат само с двойни кавички print "Hello, $namen"; # works fineprint "Hello, $namen"; # works fine print 'Hello, $namen'; # prints $namen literallyprint 'Hello, $namen'; # prints $namen literally
  • 25. Основи на синтаксиса ● Числата не се нуждаят от кавички print 42;print 42;
  • 26. Основи на синтаксиса ● Можете да използвате скоби за аргументите на функциите, или пък да пропуснете – това е въпрос на личен стил. ● Изискват се само когато може да възникнат проблеми с приоритетите (кой израз се изпълнява по-напред). print("Hello, worldn");print("Hello, worldn"); print "Hello, worldn";print "Hello, worldn";
  • 27. Вградени оператори и функции ● Perl върви с богат избор от вградени функции. ● Пълен списък с функциите на: http://perldoc.perl.org/perlfunc.html ● Можете да прочетете за всяка отделна функция и като въведете на командния ред следното: perldoc -f functionname. ● Пълната документация на операторите: http://perldoc.perl.org/perlop.html ● Ето някои от най-използваните.
  • 28. Вградени оператори и функции ● Математически оператори + събиране - изваждане * умножение / деление
  • 29. Вградени оператори и функции ● Сравнение на числа (Numeric comparison) == равенство != неравенство < по-малко > по-голямо <= по-малко или равно >= по-голямо или равно
  • 30. Вградени оператори и функции ● Сравнение на низове (String comparison) eq равенство ne неравенство lt по-малко gt по-голямо le по-малко или равно ge по-голямо или равно ● Защо има отделни сравнения за числа и за низове? – Perl няма специални типове променливи. – perl трябва да знае как ще сортира – по числов или по азбучен ред (по-точно – според кодовата таблица).
  • 31. Вградени оператори и функции ● Булева логика && and (и) || or (или) ! not (не) ● and, or и not не са просто описания на операторите Те са: – операторите сами по себе си – по-читаеми и ясни от операторите в C-стил – с по-нисък приоритет от && и „приятели“ ● Виж perlop
  • 32. Вградени оператори и функции ● Някои други оператори: = присвояване . конкатенация (съединяване на няколко низа в един) x оператор за повторение (умножение) на низ .. оператор за поредици (създава списък от числа)
  • 33. Вградени оператори и функции ● Много оператори могат да се комбинират със знака = $a += 1; # same as $a = $a + 1$a += 1; # same as $a = $a + 1 $a -= 1; # same as $a = $a - 1$a -= 1; # same as $a = $a - 1 $a .= "n"; # same as $a = $a . "n";$a .= "n"; # same as $a = $a . "n";
  • 34. Hello World #!/usr/bin/perl#!/usr/bin/perl use warnings;use warnings; use strict;use strict; use utf8;use utf8; print 'Hi'.$/;print 'Hi'.$/; Т.нар. Shebang-ред. Незадължителен под Windows Прагма за контролиране на незадължителни предупреждения Прагма за ограничаване на опасни конструкции Прагма за включване/изключване поддръжката на на UTF-8 в изходния код (Обичате уникод, нали така?). Отпечатва низ или списък от низове на екрана. Буквален низ (скаларна стойност). Разделителят за входен запис – нов ред по подразбиране. Променя идеята на Perl за това какво е ред. Вижте това знание приложено в практиката: http://git.io/1JIGsA
  • 35. Източници ● Perl CORE documentation – perlhist, perlintro, perldata, perlhack, perlguts, perlvar, perlcompile, etc. ● „Beginning Perl“ by Simon Cosens with Peter Wainwright (Wrox Press Ltd. 2000) http://www.perl.org/books/beginning-perl/ ● Modern Perl by chromatic http://www.onyxneon.com/books/modern_perl/ ● See also: books.perl.org
  • 36. Въведение в Perl Въпроси? С любезното съдействие на http://chainsolutions.net/