Подтвердить что ты не робот

Как я могу произвести впечатление на людей с возможностями Perl?

Я хотел бы представить презентацию для моих сотрудников, которые расскажут о некоторых удивительных вещах, которые может сделать Perl, о вещах, которые заставили бы программистов и не-программистов сказать себе: "КТО вы можете это сделать?!" Я действительно хочу повернуть головы, так как многие из них считают, что Perl - это умирающий язык, но также интересный и интересный.

Некоторые идеи, которые у меня есть, - это демонстрации следующих модулей:

Любые рекомендации или комментарии?

Кстати, мы - технологическая компания (управляем центром обработки данных), поэтому компьютерная грамотность моих сотрудников высока.

4b9b3361

Ответ 1

Я считаю, CPAN довольно впечатляет сама по себе. Легкость установки новых модулей довольно приятная, так как это факт, что они все.

И затем объединяя модули, чтобы делать классные вещи: генерировать RSS (или Atom) из почти любых передаваемых данных, используя GraphViz:: * для создания красивых изображений (tm).

Вы также можете посмотреть учебники некоторых из модулей большого типа структуры, Catalyst или POE, например, у них есть довольно красивые вещи, которые вы можете сделать с небольшим кодом.

Если локальная культура не слишком возмущена, некоторые из модулей Acme:: * (Acme::Bleach, например) довольно умный и уверен, чтобы рассмешить вас.

Наконец, используя XML::Twig, один лайнер, который дает вам текущий курс обмена между долларом и евро:

perl -MXML::Twig -l -e'print XML::Twig->parse( "http://www.x-rates.com")->first_elt(q{a[@href="/d/USD/EUR/graph120.html"]})->text' 

Очень легко адаптировать его к сбору данных с другого сайта.

Ответ 2

Несколько лет назад, когда я впервые научился программировать, мой двоюродный брат моей подруги показал мне Perl script, который он написал, связавшись с базой данных, содержащей позиции всех известных спутников, и вычислил время эстакады для самых больших объектов, как космическая станция Мир. script выполнялся через cron на сервере, который он запускал, и он запускался периодически, а затем отправлял ему страницу за 5 минут до данный объект был виден наверху в ночном небе. Когда мы гуляли по городу, он мог привлечь всех внимание, внезапно подняв голову и сказав "ПОСМОТРЕТЬ!", И все охнули и ошеломились, когда спутник переместился над головой.

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

Ответ 4

После отображения search.cpan.org (и объясняя концепцию CPAN), покажите им любое из следующего:

Затем сверните их умы с помощью sort/map/grep combo (aka Schwarzian Transform), который больше работает в 1 строке кода, чем вы могли бы в 50 строках С#.

Покажите им threads и forks, затем сравните это с тем же кодом, который необходим для выполнения той же работы в Java или С#.

Если они не смущены тем, что Perl уже много лет те же самые идиомы, что С# представляет < только сейчас, то я не знаю, что сказать.

Ответ 5

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

С другой стороны, почему бы просто не использовать его в повседневной работе, написать чрезвычайно полезные инструменты, которые используют все остальные, и объяснить людям, что вы создали инструменты в Perl? Таким образом, вы получаете полезные вещи для работы, и люди на вашем рабочем месте наверняка оценят ценность выполнения работы.:)

Ответ 6

Одна из самых классных вещей для меня - использование Perl для генерации кода. Особенно, когда речь идет о других языках. Я написал несколько небольших скриптов для создания классов С++ и кода Java.

Назад, когда я был неофитом Перла. Я написал этот фрагмент кода, который генерировал файлы схемы на основе нашей базы данных. Примерно через 2 часа я узнал, что мне не нужно это делать для DBIx::Class. Это не отличный Perl-код (не голосуйте за него, это просто пример), но он точно сгенерирован как 200 файлов схемы для меня.

my @db = `mysql -u XXXXX -pXXXXX --skip-column-names -e "show databases;"`;

foreach my $db_name (@db) {
    chomp($db_name);
    my @tables = `mysql -u XXXXX -pXXXXX --skip-column-names -e "use $db_name; show tables;"`;
     $_ =~ s/\n// foreach(@tables);

    unless ( -e "$db_name.pm") {
        open(DBFILE, '>', "$db_name.pm");
        print DBFILE "package mysql::schemes::$db_name;\n";
        print DBFILE "use base qw/DBIx::Class::Schema/;\n\n";
        print DBFILE '__PACKAGE__->load_classes(qw/' . join(' ', @tables) . "/);\n\n";
        print DBFILE "1;";
        close(DBFILE);
    }
    mkdir $db_name unless ( -d $db_name or -e $db_name );
    foreach my $table_name (@tables) {
           my @columns = `mysql -u XXXX -pXXXX --skip-column-names -e "USE $db_name; desc \\\`$table_name\\\`;"`;
           $_ =~ s/\n$// foreach(@columns);

           my (@names, $primary_key);
           foreach (@columns) {
                my ($name, $type, $null, $key, $default) = split(/\t/, $_);
                chomp($default);
                push(@names, $name);
                $primary_key = $name if($key ne '');
            }

            unless ( -e "$db_name/$table_name.pm" ) {
                open(TBFILE, '>', "$db_name/$table_name.pm");
                print TBFILE "package mysql::schemes::" . $db_name . "::" . $table_name . ";\n";
                print TBFILE "use base qw/DBIx::Class/;\n\n";
                print TBFILE "__PACKAGE__->load_components(qw/PK::Auto Core/);\n";
                print TBFILE "__PACKAGE__->table('$table_name');\n";
                print TBFILE "__PACKAGE__->add_columns(qw/" . join(' ', @names) . "/;\n";
                print TBFILE "__PACKAGE__->set_primary_key('$primary_key');\n\n" unless($primary_key eq '');
                print TBFILE "1;";
                close(TBFILE);
            }
    }
}

Ответ 7

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

Умная аудитория, представившаяся с этой проблемой, вероятно, скажет: "Просто раскололась на полную остановку". Тогда к ним начнут возникать случаи краев и проблемы. Полные остановки появляются во всех других местах; предложения заканчиваются вопросительными знаками и восклицаниями и тремя конечными остановками... Как насчет полной остановки или! или? за которым следует пробел, нет, но это не сработает, потому что за ним могут следовать EOF и т.д. и т.д.

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

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

Ответ 8

Продемонстрировать сложные манипуляции данными с одним лайнером, например, разбор журнала веб-сервера и 404 ошибок, затем еще один oneliner для удаления неработающих ссылок из коллекции HTML-документов...

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

Ответ 9

Я думаю, что возможность писать макросы для управления буфером Windows довольно впечатляет. Он имеет всевозможные возможности и дает вам силу Perl практически из любого приложения Windows, где вы можете вырезать/вставлять текст.

Ответ 10

Это делается в perl для win32 http://www.unix.gr/FLOSSeavesDrop.exe

Это вспомогательный экран для проверки экрана. Запустите его на ПК с Windows, а затем вы можете следить за его основным дисплеем только с помощью веб-браузера. Наведите свой браузер на IP-адрес ПК на порт 42000

Ответ 11

Если вы хотите использовать Image:: Magick, вы можете сделать быстрый script, который может превратить обычное изображение в искусство ASCII, Это будет довольно быстро script. Примените оператор sobel, а затем преобразуйте полученную яркость в значения ASCII. Я на самом деле сделал это в Python: пример.

Ответ 12

Первая мысль: App::Asciio (посмотреть скринкаст)

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

Одним из вариантов было бы решение для Microsoft Scripting Games. Ян Дюбуа из ActiveState предоставил решения с комментариями, которые вы могли бы использовать/адаптировать. (Лично я обнаружил, что многие из моих решений занимают гораздо меньше кода, поэтому вы можете отредактировать их и сделать Perl более элегантным.)

Другой вариант может проходить через некоторые столбцы Randal Schwartz. Там есть некоторые драгоценные камни. (Например, Дробление себя с помощью Twitter)

Что касается приложений, Perl::Critic является довольно удивительным. Как ack.

Ответ 13

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

Если вы ищете что-то, чтобы показать им, что будет их вау, вы должны понять, что, по их мнению, сложно в их работе, и посмотреть, сможет ли Perl сделать это очень просто. Я нахожу, что люди, как правило, не заботятся о том, может ли язык делать то, чего они уже не интересуют. Сказав это, впечатление на кого-либо с Perl - это то же самое, что произвести впечатление на любого другого субъекта поля: вы должны знать их и на что они будут впечатлены. Вы должны знать свою аудиторию.

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

Большинство вещей, на которые я произвел впечатление, почти не имеют никакого отношения к языку:

  • Существует одна база кода, которая работает на нескольких сотнях разных платформ, несмотря на различия в архитектуре.

  • Perl CPAN по-прежнему не имеет себе равных среди других языков (что очень грустно, потому что так легко сделать то же самое для других языков).

  • Культура тестирования действительно подняла планку в программировании на Perl, и там много работы, издевающейся над зависимостями платформы, проблемами кросс-модулей и т.д., без того, чтобы оригинальный разработчик много делал.

Ответ 14

На фривольной и развлекательной стороне, Дамиан Конвей, вступил в третий запутанный конкурс Perl, SELFgol выполнил 4 задания

* Its a quine (when executed, prints an exact copy of itself)
* Turns other programs into quines
* Plays Conway Game of Life
* Animates a marquee banner

И все это под 1000 символами. Довольно интересный.

Ответ 15

Если вы находитесь в ИТ-центре, у вас, вероятно, есть несколько компьютеров вокруг... мини-компьютеры, мейнфреймы, ПК, и т.д.

Как насчет script, который выходит и получает какую-то информацию об этих машинах, что нужны ИТ-специалистам, и обслуживайте его в хорошем формате HTML.

Давным-давно, у меня было 15 серверов на основе TCP/IP, которые делали что-то для разных клиентов. Я собрал Perl script, который извлекал параметры для каждого из серверов, и вставил эту информацию в новую электронную таблицу Excel, по одной вкладке на сервер. Затем он помещал его на файловый сервер где-нибудь, где все могли его изучить. Это сэкономило много времени для людей, которые поддерживали серверы.

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

Ответ 16

Так как большинство языков программирования достаточно сопоставимы на уровне how-quick-can-you-Implement-something, возможно, вы могли бы "ваять" их с прочности и достоинством платформы Perl? Вот некоторая интересная статистика о том, насколько хорошо протестированы модули Perl и CPAN. CPAN - это потрясающее создание, связанное с документацией, поиском, просмотром, аннотацией и отслеживанием ошибок. CPAN Testers - это, безусловно, обледенение на торте: коллекция тестеров на нескольких платформах и версиях Perl.

Ответ 17

Моими любимыми модулями Acme являются Acme:: Eyedrops и Acme:: Bleach. Хорошо для облегчения света.