Что я должен преподавать начинающему программисту Perl?

Я собираюсь потратить 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 (или man-страницы на Unix/Mac) отлично подходят для Perl. Вы можете ввести man perl или perldoc perl

perldoc perl; # Покажите обзор и десятки учебников; man perl - то же самое.

perldoc perlintro; # Perl для новичков; человек perlintro
perldoc perlrequick; # Пример Perl regex tutoral

perldoc perlfunc; # Показывает встроенные функции Perl
perldoc perlre; # Больше регулярных выражений Perl.

CPAN

На сайте библиотеки CPL есть тысячи библиотек.
perl -MCPAN -e 'установить DateTime'

perldoc также работает для установленных модулей: модуль perldoc

perldoc DateTime
perldoc DBI; # API базы данных. Если это не работает, установите его:
         perl -MCPAN -e 'установить DBI'

Рекомендуемые модули

perl -MCPAN -e 'установить Moose'; # Perl делает ООП
perldoc Moose; # Расскажи мне больше о лосях perl -MCPAN -e 'установить CGI'; # Быстрые и грязные веб-страницы
perl -MCPAN -e 'установить Catalyst'; # Большая веб-структура. Иногда возникают проблемы при установке. Google - ваш друг
perl -MCPAN -e 'установить CGI:: Приложение'; # Еще одна веб-структура
perldoc CGI:: Application; # Быстро взгляните на документы
Немного Q & A.

В: Почему я должен использовать Perl вместо Ruby или Python?
A: Больше людей используют Perl. Для Perl существует больше библиотек (путь больше). Perl - действительно отличный GTD-язык.

В: Почему люди ненавидят Perl?
A: Вы можете сделать некоторые уродливые вещи с этим. Помните использование предупреждений; использовать строго; во всем вашем коде. Вы можете проверить свой код перед его запуском. perl -c hello.pl


Темы Perl

Использование Perl с базами данных

http://www.perl.com/pub/a/1999/10/DBI.html

Использование Perl для веб-разработки

http://www.catalystframework.org

OO Perl

http://www.iinteractive.com/moose

Perl 1-Liners

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
qaru.site/info/12396/...
Вопросы CPAN
Статьи Рэндалла Шварца


Получение справки

Форум Perl Nabble
Каналы IRC: freenode, irc.perl.org. Есть несколько:

ИРЦ://irc.perl.org/perl
ИРЦ://irc.perl.org/catalyst
ИРЦ://irc.freenode.net/modperl
ИРЦ://irc.perl.org/perl6

Ответы

Ответ 1

Мы написали целую книгу о том, что называется Learning Perl. Ознакомьтесь с оглавлением.

Эта книга является продуктом обучения людей Perl с 1995 года. Она не ориентирована на какое-либо конкретное приложение и показывает людям части Perl, которые они будут использовать для 80% своего программирования на Perl. Мы обновили его для Perl 5.10 и включили разделы об использовании CPAN.

Удачи,:)

Ответ 2

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

Контекст: почти каждая функция в Perl имеет 2 поведения. Когда вызывается в "скалярном контексте", и он делает одно, когда вызывается в "контексте списка", он делает что-то другое вместо этого. Это может показаться странным и странным (и это в машинных языках), но является просто понятием естественного языка "сингулярного" и "множественного", применяемого к языку программирования.

Переменные: Perl имеет 2 совершенно разные и отдельные системы переменных. Лексические переменные (my) и переменные пакета (наши). Лексические переменные являются "нормальными", если вы использовали большинство языков программирования. Переменные пакета (т.е. Динамические переменные) странны, если вы не использовали что-то вроде Lisp. "Всегда предпочитайте лексические переменные над переменными пакета, за исключением случаев, когда вы не можете".

Ответ 3

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

Ответ 4

Это в основном задача, ориентированная на задачи.

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

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

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

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

Ответ 5

Опытный программист или нет, через 30 минут вы не можете притворяться, что преподаете что-нибудь, не говоря уже о Perl. В лучшем случае вы можете попытаться просветить его с помощью некоторых классных однострочных линий (для сравнения используйте их полностью раздутый аналог Java).

Ответ 6

Сначала я расскажу о списках и хэшах. (Патологически Eclectlic Disbish Lister, помните.) Покажите ему, насколько красивее foreach, чем C-стиль для.

Если он исходит из C/С++, было бы хорошо отнести его к http://perldoc.perl.org/perltrap.html или 'perldoc perltrap.' Он содержит наиболее очевидные различия, о которых нужно знать.

Ответ 7

Просто мой 2c, но по отношению к CPAN, как насчет того, чтобы вы поставили перед ними проблему расщепления английского текста на предложения?

Сначала это кажется простым: предложение представляет собой строку с периодом в конце.

Но через мгновение подумал, что программист найдет всевозможные сложности, которые возникают. Периоды могут быть посередине, если есть десятичные числа или аббревиатуры; предложения могут заканчиваться другими вещами, такими как "?", "!". или "..."; "период, за которым следует пробел", не помогает ни потому, что что касается EOF?

Короче говоря, когда дело доходит до Perl, кто-то еще подумал обо всем в этом списке и многом другом. Таким образом, вы используете Lingua::EN::Sentence.

Ответ 8

Если hes опытный программист, ему может понравиться Smart Comments, POD, закрытия, переключатель -d:DProf и dprofpp, однострочные, Perl Critic, Moose, __DATA__ или map. (На самом деле это сумасшедшая смесь.) Ид объясняет ему с самого начала, что Perl - это язык с большим количеством магии, но он может выбирать, когда придерживаться простого кода и когда рисовать палочку. Опытные программисты не боятся выбора: -)

Ответ 9

Я согласен с некоторыми другими комментаторами в том, что это действительно зависит от типа задачи, для которой используется Perl. Является ли этот человек системным администратором Windows? Затем я буду использовать WMI с Perl (скриптомат будет хорошим ресурсом здесь).

Я бы взял экземпляр "Perl Cookbook" Oreilley и нашел там интересные сюжеты. Вот ссылка на книгу здесь: текст ссылки

Одна из моих любимых вещей в Perl - это то, насколько легко сравнивать списки, искать союзы, пересечения или различия в уникальных списках (рецепт 4.9 в Perl Cookbook). Помогает вам оценить силу Perl.

Ответ 10

Это зависит от того, какое программирование имеет этот "опытный программист".

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

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

... и т.д.

Ответ 11

Идея, которая появилась у меня в голове, заключалась в том, чтобы они передавали информацию из одного формата в другой. Например, получение данных 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;
}