LINUX.ORG.RU

Основы Perl - 4 урока

 , , , , ,


0

0

Эта серия уроков была написана для тех, кто хотел бы начать программировать на Perl. К сожалению, в начале изучения этого языка люди часто сталкиваются с нехваткой подходящей информации в сети или не могут найти хороший учебник. Кроме того, благодаря некоторым «специалистам», Perl приобрел незаслуженную репутацию невероятно сложного и при этом чуть ли не бесполезного языка. Я надеюсь, что эта серия уроков как-то поможет исправить положение.

Содержание:

  • Часть 1: Типы переменных
  • Часть 2: Условные операторы и циклы
  • Часть 3: Директива use strict, ссылки и функции
  • Часть 4: Ввод/вывод, файлы, каталоги и глобы

>>> Подробности



Проверено: Shaman007 ()

кэмелбук и перлодоки наше всио

wlan ★★ ()
Ответ на: комментарий от wlan

+1. Вот уж по перлу документации точно хватает.

kranky ★★★★★ ()

Тем, кто хотел бы начать программировать на Perl, рекомендуется таки обратить внимание на Python/Ruby.

pento ★★★★★ ()
Ответ на: комментарий от pento

Спасибо, не обратили. И с каких пор питон и рубин близнецы/братья?

alx_me ★★☆ ()
Ответ на: комментарий от alx_me

А кто сказал, что они что «питон и рубин близнецы/братья»?
Эти языки хороши каждый по-своему.

pento ★★★★★ ()
Ответ на: комментарий от wlan

> кэмелбук и перлодоки наше всио

Угу, и Перл кукбук, и ... Тысячи их :)

Не, ну автор конечно старался, молодец. Может и полезно кому. Но на главную-то зачем?

sleepflint ★★★ ()
Ответ на: комментарий от pento

Эти языки хороши каждый по-своему.

И что? perl тоже хорош по-своему.

svs ★★★ ()

Хорошо, давно хотел изучить какой-нибудь приличный скриптовый язык.

legolegs ★★★★★ ()

Из предисловия:

Так сложилось, что я знаю как минимум двух человек, которые хотели бы выучить Perl.


Ну вот для них и написан сей бесценный туториал! гыгыгыгы :))))

«Перл для дебилов за 21 день» уже и так на каждом сайте по 10 штук, а вот систематичного, ТОЧНОГО и исчерпывающего руководства - нет, всё разбросано крохами по разным местам. Скажем, классы - для Перла это достаточно тонкая тема, не везде в полной мере освещённая (многие из вас знают, что классы Перла могут менять своего родителя? Менять состав членов? Создавать класс из любой дряни?). Интеграция с внешними либами - тоже high demand, там не особо rocket science, но аккуратность требуется.
В своё время делал HTML-парсер на Си как модуль к Перлу (без регэкспов, на конечном автомате) - было интересно, но при этом пришлось перерыть тонну новой (и не всегда нужной) инфы.

Вощем, дерзать надо, но на уровень выше.

matumba ★★★★★ ()
Ответ на: комментарий от pento

> Тем, кто хотел бы начать программировать на Perl, рекомендуется таки обратить внимание на Python/Ruby.

А смысл? Узнать, что существует ещё десяток вычурностей, при помощи которых можно почесать левое ухо правой ногой? И без них проблем хватает.
Перл, обладая некоторой архаичностью и пугающим синтаксисом, всё же более очевиден и прост, а главное - стабилен. То, что ты написал вчера, будет работать ещё минимум 10 лет. Пистон и Руби в этом плане - калеки-братья пубертантного периода, один хромает на пробелы, другой вообще полный харакири, для которого даже нет стандарта языка - кто ТАКОЕ уродство пустит в продакшн?! Ну маньяк разве что (за чужой счёт).
Я изучал Перл ну примерно в описываемых масштабах - 15 лет назад. Сейчас пишу генератор интерфейса НА ТЕХ ЖЕ САМЫХ ЗНАНИЯХ, разве что given/when добавилось. :) Счаслив непомерно, что не нужно как студент заново прыгать вокруг банальных перетасовок синтаксиса.
Вобщем, совет ровно наоборот: если вы всё ещё кипят^W тратите время на извраты типа рубепестона, срочно переходите на Перл - дай бог вам хоть на 50% заюзать всё то, что он умеет! Достаточно пробежаться глазами по оглавлению любого мало-мальски серьёзного руководства по Перл, чтобы понять, что возможности языка перекрывают ваш моск.

PS
Как вы догадываетесь, это не копепаста, это мои личные соображения как реально пишущего на Перле.

matumba ★★★★★ ()
Ответ на: комментарий от pento

> Тем, кто хотел бы начать программировать на Perl, рекомендуется таки обратить внимание на Python/Ruby.

Обращал, но не вижу никаких профитов Python'а и Ruby в сравнении с Perl'ом. Долгое время занимаюсь автоматизацией и Perl один из основных инструментов. Отличный язык. А изучать, полагаю, следует camelbook.

deadlock ()

Хабрасиндром б/п. Сплошной копипаст.

anonymous ()

> Perl приобрел незаслуженную репутацию невероятно сложного и при этом чуть ли не бесполезного языка

1) Quine 2) «Only Perl can parse Perl»

Да, сложно. И да, бесполезно. Закапывайте уже.

anonymous ()
Ответ на: комментарий от matumba

> что возможности языка перекрывают ваш моск.

Тут я согласен на все 100 процентов. Особенно после того как кто то математически доказал что определеный код на перле понять нельзя не выполнив его :)))

Новость была про это даже на Лоре ;)

mx__ ★★★★★ ()

Хм... перл хоть и коряв, но хорош. На нем можно писать почти в любом стиле. Включая статическую типизацию.

Хотя как у него с имзенением класса в течении времени не помню. Ну что бы методы добавлять или удалять в течении жизни одного объекта. Помню вроде биндинг к Gtk этим страдал. В Gtk можно динамически классы менять а в perl - нет.

anonymous ()

Всем спасибо за отзывы.

Хочу сказать, что camel book на мой взгляд не очень подходит на роль учебника. Достаточно полного справочника - да, пожалуй. Возможно даже, как отправная точка эта книга сойдет. Но для изучения лучше Лама и Альпака.

afiskon ()

Спасибо за уроки, дальше планируйте писать про Perl? Или остановитесь на 4х урока?

Fen1x ()
Ответ на: комментарий от matumba

> один хромает на пробелы Какие пробелы? Подробней нужно, некоторые не осиливают синтаксиса перлистов.

Достаточно пробежаться глазами по оглавлению любого мало-мальски серьёзного руководства по Перл, чтобы понять, что возможности языка перекрывают ваш моск

О да, зашёл на perl.org, тыкнул документацию и что я вижу: man pages, modules, tutorials. Ага. Я хочу ознакомиться (либо быстро найти справку по заинтересовавшему меня месту в исходниках, которые в данный момент ковыряю - имею, к примеру, реализацию на python и на этом чуде, хочу понять что символизирует вот эта абракадабра и что соответствует ей в питоне). И, внезапно, это же целый rocket science, надо, оказывается, догадаться, что reference guide по _языку_, а не по конкретному модулю, и именно _reference guide_, а не лишенный юмора, но с претензией на него выхлоп очередного гика, названный perllol, надо искать в туториалс - референс - блаблабла...

У нас есть такие приборы! Но мы вам о них не расскажем...

anonymous ()

>люди часто сталкиваются с нехваткой подходящей информации в сети или не могут найти хороший учебник.

А как же троекнижие? Книжка с ламой, затем книжка с верблюдом и затем книжка с бараном. Можно еще книжку с совой по регулярным выражениям

DNA_Seq ★★☆☆☆ ()

>Эта серия уроков была написана для тех

... кто хотел бы научиться лёгкой ненапрягающей некрофилии?

sniper21 ★★★★★ ()

нет, я конечно уважаю труд автора, просто не уважаю сам язык.

sniper21 ★★★★★ ()
Ответ на: комментарий от pento

<banderlog> ребенок подошел к ноутбуку, и постучал ладонями по клаве в руби конференции

<banderlog> когда я подошел, в том коде уже разобрались и нашли ошибки

tacitus ()
Ответ на: комментарий от Fen1x

>> Спасибо за уроки, дальше планируйте писать про Perl? Или остановитесь на 4х урока?

По заявкам трудящихся - почему бы и нет. Я точно не буду писать _серию_ статей - это слишком обязывает. Типа раз начал писать серию, то все - читатели ждут и хочешь-нехочешь, садись и пиши продолжение. А штучные статьи по вашим заявкам - это всегда пожалуйста!

afiskon ()
Ответ на: комментарий от afiskon

Заказ на статью (штучный): «Конвертирование 'однострочников' и прочих, с позволения сказать, работ, в удобочитаемый исходный код средствами самого языка».

Т.е. напишите библиотеку, которая будет раскрывать всю непознанную нами прелесть мазни, выставленную на Obfuscated Perl Contest или отдельно в виде вот таких вот воздыхательно-умилительных статеек: http://javier.rodriguez.org.mx/index.php/2006/06/28/some-lovely-ascii-art , что характерно, выставленную на страницах бульварных ресурсов.

Итогом статьи должно стать описание подхода к пониманию этого безобразия.

anonymous ()
Ответ на: комментарий от anonymous

Да не спорьте вы с этими умниками. Просто есть два типа программистов, те кто осилили перл, и те кто не осилили, следовательно пополнили ряды сторонников питона руби пэхэпэ....

unname ()
Ответ на: комментарий от afiskon

>А штучные статьи по вашим заявкам - это всегда пожалуйста!

Рекомендую вернуться в университет, посмотреть как оформляютя «штучные статьи». Дополните статью абзацем с рекомендуемой литературой, г-н гуру.

P.S. ИМХО, достаточно две книги:
1. Клинтон Пирс, «Освой самостоятельно Perl за 24 часа», 2001г.
2. Ларри Уолл, Том Кристиансен и Джон Орвант, Программирование на Perl, 3-е издание, 2005г.

gh0stwizard ★★★★★ ()

Перл хороший язык, он дает большие возможности и свободу. Хотя говорят, что излишняя свобода — это не всегда хорошо в программировании, всё-таки я предпочту свободу.

А ещё мне язык dc очень нравится, хотя к сожалению там нет операторов для работы со строками.

Xenius ★★★★★ ()
Ответ на: комментарий от matumba

> Пистон и Руби в этом плане - калеки-братья пубертантного периода, один хромает на пробелы, другой вообще полный харакири, для которого даже нет стандарта языка - кто ТАКОЕ уродство пустит в продакшн?!

Лол, а на Perl будто есть стандарт. У него просто реализация одна, а стандарта на Perl 5 нет. Вот для Perl 6 стандарт написали, но нет полной реализации.

Yet another tutorial не нужен, блоггеры достали. Есть perldoc perl, откуда уже далее можно найти все, что нужно. То же самое с дистрибутивами: если дистрибутив хороший, то в нем можно разобраться из man intro без всяких книг.

anonymous ()
Ответ на: комментарий от pento

Преимущество Perl в том, что он не объектно-одержимый. В нем не нужно думать, то ли строка имеет метод length, то ли метод length получает эту строку как параметр...

mind ()
Ответ на: комментарий от svs

> perl тоже хорош по-своему.

Ага, для гольфа.

А для всего остального - плох.

yk4ever ()
Ответ на: комментарий от matumba

> а главное - стабилен. То, что ты написал вчера, будет работать ещё минимум 10 лет.

Питоновские скрипты десятилетней давности отлично работают.

Пистон и Руби в этом плане - калеки-братья пубертантного периода, один хромает на пробелы,

Что значит «хромает на пробелы»? Непонятно.

Питоновская система отступов - одна из самых замечательных идей в программировании. Чертовски удобно, дурацкие скобки больше не мозолят глаза и не теряются.

для которого даже нет стандарта языка

Для коммонлиспа есть стандарт. Его это не спасло.

Достаточно пробежаться глазами по оглавлению любого мало-мальски серьёзного руководства по Перл, чтобы понять, что возможности языка перекрывают ваш моск.... это мои личные соображения как реально пишущего на Перле.

Это ваши соображения как человека, неосилившего питон и руби.

yk4ever ()
Ответ на: комментарий от deadlock

> Обращал, но не вижу никаких профитов Python'а и Ruby в сравнении с Perl'ом.

Поддерживаемость кода, предсказуемость, не-дибильное C API (почитайте, как slonik_v_domene плевался от PerlXS в своём ЖЖ).

yk4ever ()
Ответ на: комментарий от unname

> Просто есть два типа программистов, те кто осилили перл, и те кто не осилили,

Да, два типа: красноглазые перл-пионеры, и профессиональные инженеры-программисты.

Второй тип знает, что безобразную кашу с хаотическим синтаксисом и семантикой нельзя подпускать к серьёзным проектам.

yk4ever ()
Ответ на: комментарий от mind

> Преимущество Perl в том, что он не объектно-одержимый. В нем не нужно думать, то ли строка имеет метод length, то ли метод length получает эту строку как параметр...

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

Очень хорошо для восторжённых красноглазиков, потому что позволяет писать хитрый код.

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

Вроде на слэшдоте пробегала статейка, анализ количества уязвимостей в веб-приложениях? Первое место - само собой, перл. Ура! Отличный язык.

yk4ever ()
Ответ на: комментарий от yk4ever

>серьёзным проектам.

К серьезным проектам нельзя подпускать ничего кроме Явы. Педон тоже нельзя.

anonymous ()
Ответ на: комментарий от anonymous

>К серьезным проектам нельзя подпускать ничего кроме Явы.

Зопишем: оси у нас сплошь несерьезные проекты.

anonymous ()
Ответ на: комментарий от yk4ever

>> Преимущество Perl в том, что он не объектно-одержимый. В нем не нужно думать, то ли строка имеет метод length, то ли метод length получает эту строку как параметр...

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

Есть такой печальный момент. Правда, в Python/Ruby/etc он (или очень на него похожий) тоже присутствует, просто не так бросается в глаза, по каковой причине часто им часто пренебрегают. А зря. В Perl его volens-nolens приходится учитывать.

mind ()
Ответ на: комментарий от anonymous

>а также колеса и гусеницы

А гусеницы родственники с питоном.

anonymous ()
Ответ на: комментарий от mx__

>Особенно после того как кто то математически доказал что определеный код на перле понять нельзя не выполнив его :)))

Вот это класс! Скоро школьники будут говорить, что теорему Ферма придумали, когда на перле задачку решали.

anonymous ()
Ответ на: комментарий от yk4ever

да ну ? это от какого года статья ?

Сейчас, по дырам в веб сайтах, безоговорочное лидерство за [сюрприз]php. Это раз.

99,99% уязвимостей - плохая фильтрация данных. Какая связь с интерпретатором ? Это два.

anonymous ()
Ответ на: комментарий от anonymous

>Заказ на статью (штучный): «Конвертирование 'однострочников' и прочих, с позволения сказать, работ, в удобочитаемый исходный код средствами самого языка».

Т.е. напишите библиотеку, которая будет раскрывать всю непознанную нами прелесть мазни, выставленную на Obfuscated Perl Contest или отдельно в виде вот таких вот воздыхательно-умилительных статеек: http://javier.rodriguez.org.mx/index.php/2006/06/28/some-lovely-ascii-art , что характерно, выставленную на страницах бульварных ресурсов.

Итогом статьи должно стать описание подхода к пониманию этого безобразия.

Ну это... perl -MO=Deparse

anonymous ()

при упоминании перла вспоминаю однустрочную программу, которая «не работала». вот это кадабра. так что питон для анонимусов-нубов — наше фсьё

anonymous ()
Ответ на: комментарий от mx__

>Тут я согласен на все 100 процентов. Особенно после того как кто то математически доказал что определеный код на перле понять нельзя не выполнив его :)))

Ты случайно не на журнализда учишься? Там доказали, что статический анализ перла сводится к проблеме останова (о которой ты, школота, конечно нихера не слышал).

anonymous ()

Бррр. Сначала подумал, что глюк и статья перескочила в настоящее из глубин прошлого.

Десять лет назад, мучимый страстным желанием научиться программировать на Perl, я зашел в книжный и столкнулся с обилием информации. С первой попытки купил отличный учебник. Затем на работе почитывал и верблюжьи книги. Про perldoc и вовсе говорить нечего. Очень давно есть всё-всё.

amix ★★★ ()
Ответ на: комментарий от Xenius

> Перл хороший язык, он дает большие возможности и свободу. Хотя говорят, что излишняя свобода — это не всегда хорошо в программировании, всё-таки я предпочту свободу.

...пока не получите производственную травму мозга при написании крупного проекта на Perl. Зато потом очень быстро перейдете на Python, доказано лучшими жемчужными змееводами.

amix ★★★ ()
Ответ на: комментарий от matumba

> Скажем, классы - для Перла это достаточно тонкая тема, не везде в полной мере освещённая (многие из вас знают, что классы Перла могут менять своего родителя? Менять состав членов? Создавать класс из любой дряни?)

Классы в перле это ужас на крыльях ночи. Да, я использую Object::InsideOut, или вообще голые классы, но счастья как-то мало, видеть и использовать все внутренности руками.

На счёт информации для новичков, есть отличный перевод Алекса Отта (и меня немного) статей Рэндала Шварца из журнала Unix Review: http://linux.yaroslavl.ru/docs/www/perl/pcol/

Casus ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.