Как стать автором
Обновить
1.14

Perl *

Высокоуровневый интерпретируемый динамический язык

Сначала показывать
Порог рейтинга
Уровень сложности

Mojolicious::Lite

Время на прочтение1 мин
Количество просмотров2.6K
Sebastian Riedel не перестает удивлять, в прошлую субботу он анонсировал Mojolicious::Lite. Это реально круто, такого я в перле еще не видел, действительно «быстрый старт»:

Читать дальше →

Perl и GUI. Работа с потоками

Время на прочтение3 мин
Количество просмотров4.3K
Я затрону весьма наболевшую тему, Perl + GUI + потоки.
Наболевшую, потому что попытка заставить работать ваше приложение с потоками может закончиться неудачей. Программа «виснет», «сегфолитится», Вы обратитесь к документации, увидете там, что библиотека не thread-safe. Потраченное время было коту под хвост?

Хинт: создать потоки до вызова Tkx::MainLoop, так как MainLoop() запускает свой цикл событий и блокирует выполнение кода. Было бы все так просто! Переписали Вы код с этим условием, а она все равно виснет…

Что же делать? Выход есть.
Читать дальше →

Модуль управления деревьями Nested Sets

Время на прочтение18 мин
Количество просмотров4.8K

Задача


Да уж, собрал ты катер, что бы кататься по водоемам и наслаждаться жизнью. Поехал на очередное озеро отдохнуть, а тебе говорят, что мол с собаками и катерами вход воспрещен, и вообще у нас озеро вечно замерзшее, вот вам коньки — наслаждайтесь. «Welcome to the Virtual Hosting lake».
Читать дальше →

Perl и GUI. Часть 1

Время на прочтение3 мин
Количество просмотров7K
В предыдущем посте мы разобрались с библиотеками для написания GUI на Perl. Поэтому можно приступить к работе.

Сегодня мы попробуем создать простое приложение (окно и главное меню).
Я буду использовать Tkx и ActivePerl.

Для начала, необходимо понять основные принципы.

Читать дальше →

Perl и GUI. Сравнение тулкитов

Время на прочтение2 мин
Количество просмотров7.4K
Несмотря на большое количество модулей в CPAN, дистрибутивов Perl (Strawberry Perl, ActivePerl, MinGW Perl) возникают некоторые неопределенности, одна из них — это выбор графического тулкита для построения GUI (графического интерфейса пользователя). Об этом и пойдет речь.

Лично я остановился на ActivePerl от компании ActiveState. Также для работы применяю Komodo IDE и Perl Dev Kit.

Итак, я выбрал четыре основных модуля для работы с GUI, обеспечивающие кроссплатформенность.
Читать дальше →

Вышел Parrot 1.4.0 «Mundo Cani»

Время на прочтение2 мин
Количество просмотров1.1K
Parrot LogoЗа все время чтения хабра видел лишь несколько упоминаний Parrot VM. Тем временем, проект активно развивается, и сегодня вышел релиз 1.4.0. Parrot — виртуальная машина, предназначенная для эффективной компиляции и исполнения байткода для динамических языков программирования. На данный момент существуют реализации нескольких языков для Parrot: Tcl, Javascript, Ruby, Lua, Scheme, PHP, Python, Perl 6, APL, а также транслятор байткода .NET.

Читать дальше →

Perl — Отправляем файлы на сервер HTTP запросом

Время на прочтение5 мин
Количество просмотров14K
На самом деле, ничего оригинального, документации достаточно, даже более чем, хотя последее вызывают очень сильную тоску. Поэтому, проще один раз практически показать, как и что делается, чем десять раз читать и наступать на грабли. Условие: Есть какие-то бинарные файлы, которые лежат локально, есть сервер, на которые мы должны эти файлы положить, на этом сервере есть скрипт (обработчик формы) который занимается делает upload файлов
Задача: Данные файлы требуется добавить через web интерфейс (обработчик формы) на сервер, как будто мы браузер и отправили данные через форму.
Читать дальше →

Moose(X). Продолжение

Время на прочтение6 мин
Количество просмотров2.6K
В продолжение топика Use Moose; Современное ООП в Perl, я хочу рассказать про некоторые интересные возможности, которые предоставляет Moose и его расширения.
Из упомянутого выше топика можно понять, что с Moose вам не придется тратить время на реализацию объектной модели. Но кроме автоматического создания аксесоров/мутаторов и конструктора, есть еще куча всяких полезностей и интересностей. А уж с помощью расширений, так вообще можно преобразить Perl до неузнаваемости (в хорошую, естественно, сторону).

Примеры кода я буду приводить из своего модуля, который я пробую переписать в стиле modern perl.
Читать дальше →

Ставим Perl на Apache, работающий под Windows.

Время на прочтение2 мин
Количество просмотров7.4K
// публикую по просьбе пользователя mikegav

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

  1. Считаю, что у Вас уже установлен Apache 2.2.11. Если не установлен, то можно поставить WAMP www.wampserver.com/en
  2. Скачиваем ActivePerl-5.8.9.825-MSWin32-x86-288577.msi Скачивать нужно именно эту версию, а не 5.10, потому что для версии 5.10 нет mod_perl в репозитарии.
  3. Ставим mod_perl из репозитария, для этого выполняем из командной строки: ppm install theoryx5.uwinnipeg.ca/ppms/mod_perl.ppd
  4. Во время установки будет всего один вопрос “Where should mod_perl.so be placed? [D:/Apache2/modules]” Следует указать путь до папки “modules” (У меня D:\wamp\bin\apache\Apache2.2.11\modules\)
  5. После установки mod_perl, настраиваем вручную Apache.
    1. Подключаем perl, для этого после последнего LoadModule добавляем:
      #Enable mod_perl
      LoadFile "C:/Perl/bin/perl58.dll"
      LoadModule perl_module modules/mod_perl.so
      PerlResponseHandler ModPerl::Registry
      PerlOptions +ParseHeaders

    2. Мне не нравиться официальная рекомендация создавать отдельный каталог для perl скриптов и на него вешать SetHandler perl-script, вешать же SetHandler на корневой каталог Web сервера то-же не комильфо т.к. это убьет работу php интерпретатора. Я предлагаю сделать как я, ассоциировать расширение pl с perl-script. Для этого достаточно добавить строчку: AddType perl-script .pl. И разрешить исполнение cgi в корневой директории. Для этого в внутрь узла <Directory «d:/wamp/www/»> добавить Options +ExecCGI
    3. Ну и на любителя, если уж совсем хотите, чтобы perl скрипты вели себя как php-шные привести DirectoryIndex к такому виду: DirectoryIndex index.pl index.php index.php3 index.html index.htm

Пара слов про UTF-8

Время на прочтение6 мин
Количество просмотров46K
Perl долгое время ничего не знал про кодировки. Строка была просто последовательностью байтов, каждый держал там все что хотел, и лишь изредка приходилось задумываться о том, какая же все-таки кодировка у этих данных. Времена изменились, появился UTF; поддержать его пришлось и перлистам. Как это обычно бывает, in a perl way. Я надеюсь, что эта статья сбережет немного здоровья тем, кто до сих пор пребывает в неведении относительно реализации UTF-8 в Perl.
Читать дальше →

Атрибуты: взгляд внутрь

Время на прочтение4 мин
Количество просмотров2.3K
Это продолжение статьи "Введение в атрибуты". Если Вы не знакомы с идеей атрибутов и их синтаксисом — советую начать с нее. Ну а в этой статье рассматривается, как устроены атрибуты изнутри, как с ними обращаться, и какие могут возникнуть проблемы.
Поехали?

Атрибуты: введение

Время на прочтение2 мин
Количество просмотров2.6K
Атрибуты появились в Perl довольно давно. Знаменательная для старожилов версия Perl 5.005 содержала довольно бесполезную прагму attrs. Прагма эта позволяла навесить на функцию пару встроенных атрибутов, для чего требовалось указать внутри этой функции use attrs с соответствующими параметрами. Правда, уже в марте 2000 года в Perl 5.6 эта прагма была объявлена deprecated. На замену ей пришел модуль attributes, а также расширенный синтаксис для объявления переменных/функций. Стало возможным создавать для них собственные метки и вводить для этих меток обработчики. По непонятным причинам, популярность атрибуты так и не получили. А жаль.
Ближе к сути

Корректное использование AUTOLOAD

Время на прочтение1 мин
Количество просмотров4.3K
Хотелось бы сразу предупредить: Это статья предназначена не для зубров, а описывает вполне обычный трюк с AUTOLOAD.

Введение



В Perl существует замечательная возможность отрабатывать вызовы к неопределённым методам.

Например, в случае
package Something;

our $AUTOLOAD;

sub AUTOLOAD
{
  return 'any data';
}

sub DESTROY
{
}

package  XTest;

my $o = new Something();

print $o->dry();


Результат будет равен 'any data'.
Читать дальше →

Ближайшие события

Мучаем Last.fm и СDDB.

Время на прочтение4 мин
Количество просмотров4.1K
Случилось так, что за долгую меломанскую жизнь у меня скопилось более 1000 дисков уже «архаичного» формата аудио CD. А что же делать в эпоху социальных сетей, в общем, и Last.fm в частности, с таким количеством дисков? Правильно, надо отправить всё на Last.fm и желательно скопом, не слушая их на компьютере (хотя такое количество это всего полтора месяца непрерывного штурма соседских ушей), а кроме того аудио CD на компьютере я не слушаю. Чтобы решить такую «непростую» задачу надо всего четыре вещи: великий и могучий язык PERL, Last.fm API, CDDB и быть немного программистом.
Или к радости, или к сожалению, у меня есть только 3/4 от необходимого, так как программистом я не являюсь и никоим образом профессия моя к компьютерам не относима (sic!). Ну что же, глаза болят, а руки делают; желание иметь красивую статистику и профиль пересиливают отсутствие необходимых навыков :).
Итак, по порядку...

Украинский воркшоп «Перл мова» — 2009

Время на прочтение1 мин
Количество просмотров498
Привет.
Спешу напомнить, что 7 марта, в Киеве пройдёт перловый воркшоп.
Это такая… миниконференция, а может быть и не мини.
В программе мероприятия доклады, и мастерклассы, а также беседы в кулуарах и кабаках с такими же как вы разработчиками, использующими перл. Особенно хочется отметить присутствие специально приглашённого гостя Джонатана Вортингтона, одного из разработчиков компилятора Perl 6 Rakudo.
Так же в программе серия блиц докладов. Так что если вам хочется о чём то расказать, или у вас есть инетесная разработка, или вы хотите поставить серьёзный вопрос, но 40 минут для вас слишком много, или вы неуверены в своих силах, то это лучший выход.

Участие в мероприятии бесплатное, атмосфера креативная и добрая.
Приглашаем.

Сразу хочу добавить, что в Москве такое тоже произойдёт этой весной, но чуть пожже.

Вызов пользовательской функции в Perl из переменной

Время на прочтение1 мин
Количество просмотров2.6K
Да, понадобилось мне сделать такой изврат. В PHP — это call_user_func().

Учитывая, что в Google я с довольно большим трудом нашёл реализацию (да и не там, где ожидал, а в вызовах), решил опубликовать сюда:

#!/usr/bin/perl -w
use strict;
if(exists $ARGV[0] && exists &{$ARGV[0]}){
    my $func_call = \&{$ARGV[0]};
    &$func_call();
}
sub test{
    print "123\n";
}


соответственно,

./test.pl test выведет 123
./test.pl aaa ничего не выведет

Возможно, кому-то пригодится)

Почему корпорации ненавидят Perl?

Время на прочтение2 мин
Количество просмотров8K
Организаторы конференции YAPC::Europe объявили, что главной темой в следующем году станет использование Perl на корпоративном уровне. А точнее — проблема, что делать с громадными объёмами некачественного кода, которые скопились за долгие годы.

Дейв Кросс, разработчик и журналист на технологические темы, всю жизнь создавал корпоративные системы на Perl, посетил вышеупомянутую конференцию, где побеседовал с представителями компаний. Он пишет в блоге O’Reilly ONLamp, что и сам мог бы заявиться на следующий год с докладом на тему «Почему корпорации ненавидят Perl». Это действительно несправедливо, считает Кросс.

Дейв Кросс не волнуется за своё собственное будущее как программиста, потому что до самой пенсии может быть обеспечен работой, поддерживая множество уже созданных систем. Однако факт в том, что многие крупные компании сейчас отказываются от Perl’а и собираются переписывать всё на Java + PHP.

В настоящее время сами разработчики веб-систем явно начинают относиться к Perl’у как к некому технологически устаревшему артефакту и в целом говорят о нём пренебрежительно. Такое настроение передаётся заказчикам, которые не разбираются в технологиях, однако теперь сразу начинают беспокоиться, едва услышав слово “perl”. Им не нужны «устаревшие» решения, они хотят красивые системы на новых технологиях.
Читать дальше →

Тестирование программ Perl для начинающих. Test:: Simple

Время на прочтение2 мин
Количество просмотров3.4K
Test::Simple — это базовый, очень простой модуль, который используется для написания тестов.

Модуль дает возможность использовать для тестирования всего одну функцию — ok(). Если возможностей данной функции недостаточно, рекомендуется использовать Test::More. Тесты, написанные с помощью Test::Simple полностью совместимы с Test::More.

Читать дальше →

Тестирование программ Perl для начинающих. Test Anything Protocol (TAP)

Время на прочтение3 мин
Количество просмотров5K
Прежде чем, я перейду к описанию работы с модулями Test::More, Test::Harness и Test::Simple, хотелось бы уточнить, что такое TAP — упоминание которого, время от времени, появляется при обсуждении темы тестирования программ.

Текст данной темы — в основном, перевод подходящего текста из Википедии (ссылка ниже).
Пожалуй, единственный материал в данной теме, который практически не подвергался мною никакой
обработке, кроме перевода. :)


Читать дальше →

Вклад авторов