Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Авторские статьи (https://forum.antichat.xyz/forumdisplay.php?f=31)
-   -   Perl с нуля. Часть первая. (https://forum.antichat.xyz/showthread.php?t=15065)

tclover 26.02.2006 16:02

Perl с нуля. Часть первая.
 
Вот, как и обещал, пишу статью о программировании на этом, бесспорно, прекрасном языке.
Алерт! Статья для новичков! Все кто уже потирает руки с желанием нагадить в комментах - валите отсюда сразу. :)
Говорить я буду о перле под виндовс - это чтобы небыло потом дальнейших пререканий и недоразумений.
Непосредственно перед тем как мы начнём мучать этот язык, советую скачать -
ActivePerl(12.7MB)
Интерпретатор Перл.(Именно интерпретатор, а не компилятор, как его ошибочно называют многие)
EmEditor (3.1 MB) (Редактор) В нём Вы будете находить свои ошибки (а ошибки есть у всех и всегда) куда быстрее, чем в блокноте.
И маленький совет от меня - Когда будете устанавливать ActivePerl - создайте на диске C директорию usr и уже в неё ставьте Perl.
-------------
Поскольку за один раз проглотить перл неполучится - буду писать примерно раз в две недели продолжение.
Ну вот собственно с вступлением покончено раз и навсегда. Обратного пути у Вас нет :). Вперёд!
---------------

Начало
Ну вот. Начинаем.
Перво-наперво напишем малюсенькую программку которая выведет надпись - "antichat - rulezzz4hax0rz".

Код:

#!/usr/bin/perl -w
print ("antichat - rulezzz4hax0rz\n");

Сохраняем это дело в файл с именем например antichat.pl
Открываем из cmd и смотрим на результат.
Теперь обьясню что мы только что сделали :)
Итак - первая строка говорит о том что это программа написана на перле и указывает путь к интерпретатору. Кроме того, как Вы наверное заметили здесь присутствует ключ -w. Этот ключ применяют для того что чтобы перл-интерпретатор предупреждал нас о заведомо опасных конструкциях программы. Вообщем на мой взгляд ничего существенного, но так лучше следить за качеством кода.
Вторая строка - это выполняемая часть нашей с Вами первой программы. Как видите здесь стоит функция print. В нашем случае print имеет только один аргумент - строку текста.
"\n" - означает переход на новую строку.
";" - Точка с запятой завершает оператор.

Теперь усложняем задачу - пишем прогу которая будет называть Вас по нику.
Наша прога сначала спросит ник, запишет его в переменную и выведет на экран.
Одно из мест для хранения значений (например текстовых) - скалярная переменная. Для хранения ника я возьму переменную $nick.
Получение данных осуществляется при помощи конструкции <STDIN>,
которая в нашем случае получит строку, которую мы в свою очередь присвоем переменной $nick.

Код:

#!usr/bin/perl -w
print "What is you nick-name?\n"; #Какой у тебя ник?
$nick = <STDIN>;
#Теперь нам осталось сказать "Привет" и указать значение переменной $nick
print "Hello,$nick!\n";

Упс... Забыл :) Если Вы всё сделали правильно, то Ваш ник и восклицательный знак отбразились на разных строчках.
Сейчас исправим - Дело в том, что например ник "tclover" поступает как "tclover\n". Чтобы избавиться от этого
мы воспульзуемся функцией chomp, которая принимает скалярную переменную и удаляет из её строкового значения символ перехода на новую строку - "\n"
chomp ($nick);

Теперь у нас получилось что-то вроде этого -

Код:

#!usr/bin/perl -w
print "What is you nick-name?\n";
$nick = <STDIN>;
chomp ($nick);
print "Hello,$nick!\n";

Вот так уже значительно лучше :)
Теперь усложним ещё больше. Мы же любим себя? Любим конечно, глупый вопрос :)
Тогда сделаем так, чтобы для нас любимых привествие было особым.Добавляем операцию сравнения.

Код:

#!/usr/bin/perl -w
print "What is you nick-name?\n";
$nick = <STDIN>;
chomp ($nick);
if ($nick eq "tclover"){
        print "Hello, tclover You - the Best!"; # Типа для нас
} else {
        print "Hello, $nick \n"; # Типа для всех остальных
}

В операции eq мы сравнили две строки. Если они равны, то результатом будет "истина".
Оператор if выбирает, какой блок операторов (это те что между фигурными скобками) выполняется - если выражение даёт в результате "истина", то выполняется первый блок, ну а если "ложь" - то выполняется второй блок.

Ну и последнее на сегодня.
Рассмотрим ещё один код. У всех кто открыл это (кроме товарища по имени tclover), ЭТО будет просить
ввести пароль.
Код:

        #!/usr/bin/perl -w
        $pass = "antichat"; # Обьявляем пароль - пароль сегодня "antichat"
        print "What is your name? \n";
        $nick = <STDIN>;
        chomp $nick;
        if ($nick eq "tclover"){
        print "Hello, tclover! You the Best! \n";
} else {
        print "Hello $nick! \n";
        print "What is the password? \n";
        $vopros = <STDIN>;
        chomp ($vopros);
        while ($vopros ne $pass){
        print "Nichrena, try again. What is the password? \n";
        $vopros = <STDIN>;
        chomp ($vopros);
        }
}

Поясню. сначала мы задали секретное слово поместив его в переменную $pass. Прога спрашивает вызывая функцию принт у пользователя пароль и сравнивает с тем что у нас есть. Введённые данные сравниваются с тем что мы задали в операции ne. Эта операция возвращает значение "истина", если сравниваемые строки не равны. Заметьте отличие от операции eq. Далее мы задествовали цикл while, который ваполняется до тех пор пока сравнение проходит с результатом "истина".

Ну и в заключение первой части: Всё это я писал для тех, кто ничего не знает о языках программирования, но очень хочет. Перл на мой взгляд наиболее лёгкий для изучения язык.
Все умники которые начнут кричать о ламероватости этой статьи могут идти по своему выбору либо сюда
либо сразу в /dev/null.
А те кто только начинают свой путь - удачи Вам в изучении этого языка. Как только найду время начну писать продолжение. Всем удачи!

nerezus 26.02.2006 17:52

Цитата:

бесспорно, прекрасном языке.
вынужден несогласиться.

почему выбрал именно про перл писать? других языков нет что-ли? =)

тема скобок не раскрыта.
тема strict не не раскрыта
тема метасимволов(типа \n) не раскрыта
тема ибли не раскрыта
тема сравнения не раскрыта
тема оформления кода не раскрыта

хотя это почти все юзается в статье

nerezus 26.02.2006 17:55

почему перл сакс:
1. ООП прятянуто за уши. Тут без комментариев. Не нужны комментарии.
2. Переменные по умолчанию. Из-за сабжа приходится читать не только нужный отрывок скрипта, но и отрывок перед ним, чтобы понять, благодаря какой ебической силе меняется переменная.
3. Постусловия. Это вобще маразм - поставить условие в конец строки. Из-за такого кретинизма приходится читать код, а не просто поглядывать на управляющие структуры. Особенно усугуюляется это благодаря п.4.
4. Вольности в синтаксисе. Ну вот нахрена? Правильно - как проще, а не как короче. BlackMagic никому не нужен, кроме автора текста.

Evolution 26.02.2006 17:57

ко всему уважению к автору, я бы луше купил/скачал учебник.
а на форуме про язык програмирования писать глупо, т.к. всё описать всёравно не сможешь(времи оч много займёт)...да и статей тогда будкт не один десяток

tclover 26.02.2006 17:59

1. начну писать продолжение
2. могут идти по своему выбору либо сюда либо сразу в /dev/null.
3. Изучив один язык легко вычуить другое.
И 4. Пля. Там написано куда идти таким умным парням как ты - двигай на wasm.ru и там уже можешь поумничать вволю.
Вольности в синтаксисе - как хочу так и пишу.
Насчёт того что перл противопоказан новичкам - не вижу ни оной причины для этого. Новичкам ничего не противопоказано, даже ассм. Начинай хоть с него. Без разницы.

nerezus 26.02.2006 18:00

Цитата:

Вы должны добавить репутацию кому-то еще, прежде чем сможете снова добавить ее Trampled_clover.
потом + поставлю значит )

Цитата:

Алерт! Статья для новичков! Все кто уже потирает руки с желанием нагадить в комментах - валите отсюда сразу.
мне кажется перл новичкам противопоказан. Его постепенно тем более сложно изучать.

tclover 26.02.2006 18:09

Цитата:

тема ибли не раскрыта
Это ты не туда зашёл :) Тему ибли :) раскрывать и не собирался.

Morph 26.02.2006 19:01

раскрой тему ебли.

А если серьезно написал бы с примерами там как примерно сплойты пишуться объяснил бы что к чему.
Интересно многим было бы.

tclover 26.02.2006 19:11

Цитата:

А если серьезно написал бы с примерами там как примерно сплойты пишуться объяснил бы что к чему.
Интересно многим было бы.
Вот сразу прямо и в сплоиты. Там же два раза написано - "Для новичков" и "С нуля". Всему своё время.

gazta 26.02.2006 19:52

лучше было бы в файл всё загнать и ссылками давать так удобно и практично

А так да клёва (особенно для меня тк в перле не шарю)

И вообще взялся доведи до канца и не бросай как принято у вас на античате

tclover 26.02.2006 19:55

Цитата:

И вообще взялся доведи до канца и не бросай как принято у вас на античате
Не боись. Доведу.
Всё будет аллрайт, как говорят буржуины.

tclover 27.02.2006 10:21

Цитата:

почему выбрал именно про перл писать? других языков нет что-ли? =)
Потому что Калашникова мне всё равно не переплюнуть :)

Tem 27.02.2006 10:42

Даже очень не плоха, PHP знаю , а спомошью тебя выучу Perl . Продолжения давай )

[Zarakul] 27.02.2006 10:59

При всём уважении к автору [Evolution ;) ], я б не стал называть эту статью "для новичков". Новички обычно ни с Perl`а начинают. А тема статьи, имхо, "Что знает её автор о данном языке" или "Чем он пользуется при написании чего-то на данном языке".

Tem 27.02.2006 11:11

Не для навичков , извените меня ну навичок сразу не будет изучать Perl )), сперва ХТМЛ, потом уже идти по цепочка, а так статья не плохая.

nerezus 27.02.2006 14:57

Tem, у тя каша в голове: ты птаешь языки разметки и языки программирования.

podkashey 27.02.2006 21:29

Ни че так статья. Правда если хоть чуть-чуть знаешь даже паскаль, то можно не вдаваться в смысл. Trampled_clover, без обид. ;)
Не у кого нет идеи расписать по полочкам, что делает какой-нить сплойт на перле, чтобы потом все сами могли разбирать ошибки "от дурака" в сплойтах? Хорошая бы статья была. :)

rent0n 03.03.2006 21:51

все хорошо да, кроме 1-й же строчки кода #!/usr/bin/perl -w
Спрашивается причем здесь /usr/bin/perl, если ты кодишь под винду? Тогда и указывай путь к виндовому интерпретатору...

tclover 03.03.2006 22:01

Цитата:

Сообщение от rent0n
все хорошо да, кроме 1-й же строчки кода #!/usr/bin/perl -w
Спрашивается причем здесь /usr/bin/perl, если ты кодишь под винду? Тогда и указывай путь к виндовому интерпретатору...

А ты прочитал эту строчку? -
Цитата:

И маленький совет от меня - Когда будете устанавливать ActivePerl - создайте на диске C директорию usr и уже в неё ставьте Perl.

LeopardSS 03.03.2006 22:53

Все отлично, пиши дальше. Только желательно побольше и почаще, раз в 2 недели, так можно на год растянуть

rent0n 04.03.2006 09:02

Цитата:

Сообщение от Trampled_clover
А ты прочитал эту строчку? -

Вот я ьи говорю, что нужно указывать было _полный_ путь к интерпретатору Perl

tclover 04.03.2006 11:49

Цитата:

Сообщение от rent0n
Вот я ьи говорю, что нужно указывать было _полный_ путь к интерпретатору Perl

лол....
Обьясняю подробно:
Ставиш перл так: Создаёшь в корне диска Ц директорию usr. Тогда получится что твой перл стоит так: C:\usr\bin\perl.exe

А если перл стоит ТАК тогда можно писать начало именно так,как пишут во всех номальных операционных системах.
Пипец. Рентон, перед тем как пороть чушь, ты попробовал хотя бы подумать?

rent0n 04.03.2006 13:48

Так, ты сам сначала подумай, что ты говоришь. Ты либо указываешь полный путь к интерпретатору типа C:\usr\bin\perl, либо ты указываешь относительный путь. Причем путь указывается относительно текущей директории, а так ты указываешь его относительно юниксовой корневой директории (/). Это во-первых. Во-вторых, слэши. В винде используются _обратные_ слэши.
Сравни C:\usr\bin\perl.exe и /usr/bin/perl. Ты слепой чтоли, если разницу не видишь?
Чувак, ты сам недоконца разобрался, а еще учить лезешь других

tclover 04.03.2006 13:50

Цитата:

Сообщение от rent0n
Так, ты сам сначала подумай, что ты говоришь. Ты либо указываешь полный путь к интерпретатору типа C:\usr\bin\perl, либо ты указываешь относительный путь. Причем путь указывается относительно текущей директории, а так ты указываешь его относительно юниксовой корневой директории (/). Это во-первых. Во-вторых, слэши. В винде используются _обратные_ слэши.
Сравни C:\usr\bin\perl.exe и /usr/bin/perl. Ты слепой чтоли, если разницу не видишь?
Чувак, ты сам недоконца разобрался, а еще учить лезешь других

Ну если словами тебя не убедить... Короче жду пока ты сам попробуешь. Сам увидишь что так можно.
http://img47.imageshack.us/img47/326/renton21hu.jpg
---------
Задолбали "профессионалы".

rent0n 04.03.2006 14:13

Если скрипт запускается, это не значит, что это правильно. Просто в винде файлы с раширением .pl ассоциируются с perl.exe. У них даже иконка меняется, если ты заметил. Ты можешь вообще эту строку убрать, и все будет работать. А для отображения warning'ов и т.п. нужно запускать так: perl -w <name_of_script.pl>
> Задолбали "профессионалы". Согласен на 100%

rent0n 04.03.2006 14:15

Ха, я лежу пацтулом. Чувак, ты хочешь сказать что C:\usr\bin\perl == /usr/bin/perl ???
PS картинка смешная очень

rent0n 04.03.2006 15:24

>Аффтор пей йад канистрами!
ИМХО ты гонишь пургу...
У Кловера написано все правильно.
Когда не уверен и не знаешь лучше не пиши ниче, хорошо? Включи комп, убей себя и лежи пацтулом все будет ок.

Нда, еще один умник, считающий что корректный путь к perl под виндой - это /usr/bin/perl.
ВОт ссылочка, умники. Раз вы правы, почему же это работает?
http://img53.imageshack.us/img53/159...loverhu4ou.jpg

FHT 04.03.2006 15:36

Удалено
Смотри пост №37
А насчет мнения ты мою подпись читал?
Так вот оспорить его проблемно =)

rent0n 04.03.2006 15:39

это не злоба, я сказал, что скрипт будет работать без E:\perl\bin\perl (там у меня стоит перл). И он работает. А вы пытаетесь указать путь, как если бы это был linux/unix.

FHT 04.03.2006 15:48

Цитата:

Сообщение от rent0n
это не злоба, я сказал, что скрипт будет работать без E:\perl\bin\perl (там у меня стоит перл). И он работает. А вы пытаетесь указать путь, как если бы это был linux/unix.

2 rent0n
Короче прекращаем разборы!
Кловер написал куда и как ставить и это корректно!
Ты написал свой вариант.
Свои мессаги с разборами я удаляю.

nerezus 04.03.2006 15:51

Цитата:

я сказал, что скрипт будет работать без E:\perl\bin\perl (там у меня стоит перл). И он работает.
чувак, ты гонишь. Путь к интерпретатору надо указывать, иначе кроме как из коммандной строки он у тебя нигде не запустится. Хватит говорить херней =)))

nerezus 04.03.2006 16:43

что-то мне подсказывает, что он у тебя на имя файла после точки(ранее известное в досе, как расширение) смотрит. А если файл переименовать в jopa.text ?

rent0n 04.03.2006 17:13

ну наконец-то! Чувак, я об этом уже говорил см.мои предыдущие посты(сообщение в 13:13)

nerezus 04.03.2006 17:32

А теперь попробуй запустить скрипт как CGI.
Или переименуй в someScript.perl и запусти.

И нихера не заработает. Понятно?

Способ же Кловера работает.

tclover 06.03.2006 09:54

Простите что написание второй части задерживается - нет времени покачто. Как разберусь с учёбой (важный зачёт и подготовка к нему)так и напишу продолжение.

drmist 06.03.2006 23:51

Хорошая статья
Ждем в следующей части работу с файлами и сокетами ;)
Хех, жалко что от них простого смертного отделяют циклы, структуры, масиивы и еще дохрена чего ((

INFerno-- 22.03.2006 11:58

читил читал кто пров не понял так куда перл надо устанавливать!

Medigan 26.03.2006 20:41

Возникла проблема.
Сделал все по примеру ( т.е. написал #!/usr/bin/perl -w), долго рассматривал скрин, который запостил clover. Но если просто запустить созданный скрипт из cmd:
C:\>1.pl
То пишет, мол отказанно в доступе.
Приходиться писать так для запуска скрипта.
C:\>/usr/bin/perl.exe C:\1.pl

~Shapaev~ 12.04.2010 14:16

http://strawberryperl.com/ - хороший опен сорс интерпретатор перла

Dr.TRO 12.04.2010 19:08

chomp($vopros = <STDIN>);

Перлоебы здесь :)


Время: 07:51