Я собираюсь потратить 30 минут на обучение Perl опытному программисту. Лучший способ изучить Perl - это написать код. Помимо CPAN, что бы вы показали программисту, чтобы они поняли выразительность Perl, объем функциональности, предоставляемой CPAN, при этом сохраняя все в чистоте и порядке, чтобы они чувствовали себя комфортно с языком? Я оставлю хитрые вещи на другой день.
use warnings;
use strict;
# use A_CPAN_LIB;
sub example_func1 {
# use the CPAN lib or demonstrate some basic feature of Perl
}
example_func1();
# ...
__END__
Хотите верьте, хотите нет, но страницы руководства. Хорошо, мы просто будем использовать perldoc вместо этого, чтобы быть дружественным к Windows.
Страницы perldoc (или страницы руководства в Unix / Mac) отлично подходят для Perl. Вы можете ввести man perl или perldoc perl
Perldoc Perl; # Показать обзор и десятки учебных пособий; man perl такой же.
Perldoc Perlintro; # Введение в Perl для начинающих; человек perlintro
Perldoc Perlrequick; # Пример регулярного выражения Perl tutoral
Perldoc Perlfunc; # Показывает встроенные функции Perl
Perldoc Perlre; # Еще Perl regex.
На сайте библиотеки Perl CPAN.
есть тысячи библиотек.
perl -MCPAN -e 'установить DateTime'
perldoc работает и с установленными модулями: perldoc module
perldoc DateTime
perldoc DBI; # API базы данных. Если это не сработает, установите его:
perl -MCPAN -e 'установить DBI'
perl -MCPAN -e 'установить Moose'; # Perl делает OOP
Perldoc Moose; # Расскажите подробнее о Moose
perl -MCPAN -e 'установить CGI'; # Быстрые и грязные веб-страницы
perl -MCPAN -e 'установить Catalyst'; # Большой веб-фреймворк. Иногда возникают проблемы с установкой. Google - ваш друг
perl -MCPAN -e 'установить CGI :: Application'; # Другой веб-фреймворк
perldoc CGI :: Приложение; # Взгляните на docs
Немного вопросов и ответов.
В: Почему я должен использовать Perl вместо Ruby или Python?
О: Все больше людей используют Perl. Для Perl есть больше библиотек (намного больше). Perl - действительно отличный язык GTD.
В: Почему люди ненавидят Perl?
A: Вы можете делать с ним некрасивые вещи. Не забывайте использовать предупреждения; используйте строгий; во всем вашем коде. Вы можете проверить свой код перед его запуском. perl -c привет.pl
http://www.perl.com/pub/a/1999/10/DBI.html
http://www.catalystframework.org
http://www.iinteractive.com/moose
http://www.perlmonks.org/?node_id=470397
http://sial.org/howto/perl/one-liner
http://perlmonks.org/index.pl?node=Tutorials
Их десятки.
http://www.amazon.com/s/ref=nb_ss_gw?url=search-alias%3Dstripbooks&field-keywords=perl&x=0&y=0
Perlmonks
Perl.org
Pleac
Скрытые возможности Perl в StackOverFlow
CPAN FAQ
Статьи Рэндалла Шварца
Форум о Perl Nabble
Каналы IRC: freenode, irc.perl.org. Их несколько:
irc: //irc.perl.org/perl
irc: //irc.perl.org/catalyst
irc: //irc.freenode.net/modperl
irc: //irc.perl.org/perl6
@Pax - язвительные комментарии не способствуют развитию разговора. Если бы вы написали это, я уверен, вы получили бы более чем несколько отрицательных голосов за свои проблемы, и это вполне оправданно.
@Pax: это совершенно несправедливое сравнение. Изучение Python не займет целых 30 минут! ;-) Я бы обязательно сказал неофиту Perl попрощаться с буквами на его клавишах Shift. :-П
@ converter42 - я искренне рад, что был опубликовал в качестве комментария. Я ожидал увидеть ответ в конце списка с -4 или около того, который говорит о том же самом.





Определенно покажите им, как легко использовать регулярные выражения в Perl.
И теперь у вас две проблемы. :-)
Это справедливый ответ, сами регулярные выражения могут быть сложными, но их легче использовать в Perl, чем на других языках, поскольку они являются первоклассными гражданами. Есть операторы и встроенные модули, предназначенные для работы с регулярными выражениями. Будет ли это частью 30-минутного вступления, зависит от проекта.
В Perl 6 они первоклассные граждане. В Perl 5 они - граждане второго сорта. На большинстве других языков они вовсе не граждане, а просто рабы.
Если они уже знакомы с регулярными выражениями, да. Если нет, то обучение регулярному выражению может легко заполнить 30 минут (и многое другое) само по себе, вообще не углубляясь в Perl.
Это в основном вопрос, ориентированный на задачу.
Если они собираются использовать его для синтаксического анализа, покажите им, насколько легко манипулировать STDIN и файловым вводом-выводом.
Если они собираются использовать его для баз данных, покажите им, как получить хэш-ссылки из результатов запроса, и это должно их поразить.
У Perl обычно есть способ сделать любую задачу сверхбыстрой. Выберите задачу, которую им нужно выполнить.
Но обязательно научите их пользоваться моими и местными. Подчеркните важность меня, и это сделает их опыт более счастливым.
Если он опытный программист, ему могут понравиться Умные комментарии, POD, закрытие, переключатель -d:DProf и dprofpp, однострочные, Perl Critic, лось, __DATA__ или карта. (Это действительно безумная смесь.) Я с самого начала объяснил ему, что Perl - это язык с большим количеством магии, но что он волен выбирать, когда придерживаться простого кода, а когда рисовать волшебную палочку. Опытные программисты не боятся выбора :-)
Опытный программист или нет, за 30 минут ты не сможешь ничему научить, не говоря уже о Perl. В лучшем случае вы можете попытаться просветить его какими-нибудь классными однострочниками (для сравнения предоставьте их полноразмерный Java-аналог).
Мы написали целую книгу об этом под названием Изучение Perl. Ознакомьтесь с оглавлением.
Эта книга является продуктом обучения людей Perl с 1995 года. Она не предназначена для какого-либо конкретного приложения и показывает людям части Perl, которые они будут использовать для 80% своего программирования на Perl. Мы обновили его для Perl 5.10 и добавили разделы по использованию CPAN.
Удачи, :)
Изучение Perl (хотя и 2-го издания) было тем, как я взял Perl. Я продолжал обращаться к книге много лет спустя, поскольку это был такой хороший и сжатый ресурс.
Я бы сначала рассмотрел списки и хеши. (Запомните, список патологически эклектичного мусора.) Покажите ему, насколько foreach для него красивее, чем стиль C.
Если он пришел с C / C++, было бы хорошо порекомендовать ему http://perldoc.perl.org/perltrap.html или perldoc perltrap. Он содержит наиболее очевидные различия, о которых следует знать.
Я согласен с некоторыми другими комментаторами, что это действительно зависит от типа задачи, для которой используется Perl. Этот человек является системным администратором Windows? Затем я расскажу об использовании WMI из Perl (здесь вам может быть полезен скриптоматик).
Я бы взял копию «Поваренной книги Perl» Орейли и нашел там несколько интересных тем. Вот ссылка на книгу здесь: текст ссылки
Одна из моих любимых вещей в Perl - это то, насколько легко сравнивать списки, искать объединения, пересечения или различия в уникальных списках (рецепт 4.9 в Perl Cookbook). Помогает вам оценить мощь Perl.
Это зависит от того, в каком программировании разбирается этот «Опытный программист».
Если они много занимались программированием оболочки, они, вероятно, будут впечатлены Perl в его супер-awk-особенностях - сделайте некоторое практическое извлечение и составление отчетов с помощью регулярных выражений и шаблонов.
Если они больше похожи на программистов на C, которым нравится работать со сложными структурами данных, покажите им, как легко вы можете создать хэш хешей и как быстро выполняется полученный код.
... и так далее.
Идея, которая пришла мне в голову, заключалась в том, чтобы они передавали информацию из одного формата в другой. Например, получение данных xml и передача их в JSON для использования на веб-странице.
cpan JSON XML::Simple
use strict;
use warnings;
use JSON;
use XML::Simple;
my $data;
{
open( my $file, '<', 'filename.xml' ) or die;
$data = XMLin($file);
close $file;
}
{
open( my $file, '>', 'filename.json' ) or die;
print $file to_json( $data );
close $file;
}
Стилистический комментарий: вы всегда должны «использовать JSON :: Any;», а не «использовать JSON;» :)
В Perl есть две вещи, которые, вероятно, будут чужды даже опытным программистам, поэтому их, возможно, следует упомянуть заранее, чтобы они не убежали с воплями.
Контекст: почти каждая функция в Perl имеет 2 поведения. Когда он вызывается в «скалярном контексте» и выполняет одно действие, при вызове в «контексте списка» он вместо этого делает что-то другое. Это может показаться странным и странным (и это так в машинных языках), но это просто естественная языковая концепция «единственного» и «множественного числа», применяемая к языку программирования.
Переменные: Perl имеет 2 совершенно разные и отдельные системы переменных. Лексические переменные (мои) и переменные пакета (наши). Лексические переменные считаются «нормальными», если вы использовали практически любой язык программирования. Переменные пакета (то есть динамические переменные) выглядят странно, если вы не использовали что-то вроде Lisp. «Всегда отдавайте предпочтение лексическим переменным, а не пакетным переменным, кроме случаев, когда вы не можете этого сделать».
Просто мой 2c, но в отношении CPAN, как насчет того, чтобы вы поставили им задачу разбиения английского текста на предложения?
Сначала это кажется простым: предложение - это строка с точкой в конце.
Но после минутного размышления программист обнаружит, что возникают всевозможные сложности. Точки могут быть посередине, если есть десятичные числа или сокращения; предложения могут заканчиваться другими словами, например "?", "!" или же "..."; «точка, за которой следует пробел» тоже не помогает, потому что как насчет EOF?
Короче говоря, когда дело доходит до Perl, кто-то еще подумал обо всем в этом списке и многом другом. Итак, вы используете Lingua :: EN :: Приговор.
А? Уходите с комфортом -> Perl <- через -> 30 минут <-?