Как стать автором
Поиск
Написать публикацию
Обновить
0.39

Perl *

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

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

Приглашаем на Moscow PM 06/02

Время на прочтение2 мин
Количество просмотров3.3K
6 февраля, первый раз в этом году, компания Mail.Ru Group откроет двери сообществу Moscow.pm (группа московских Perl-программистов).

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



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

Касаемо точек

Время на прочтение3 мин
Количество просмотров19K
image
В языке perl существует несколько операторов, которые состоят только из точек. Сколько таких операторов вы можете назвать?
Читать дальше →

Web Фреймворк по-японски — Amon2

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


INTRO

В интервью японца Tokuhiro Matsuno прозвучала следующая фраза:
«Некоторыми приложениями нашей компании пользуются более миллиона человек. Все это работает на Amon2


Я не нашел на русском языке никакой инфы об этом веб фреймворке. И решил попробовать, что это за Amon2, чисто для себя, и, может быть, кому-то это будет интересно.

Добро пожаловать под кат ...

18 декабря языку Perl исполнилось 26 лет

Время на прочтение1 мин
Количество просмотров8.8K
26 лет назад, в декабре 1987 года, Ларри Уолл выпустил первую версию языка в ничего не подозревавший мир. Ссылка на группу usenet comp.sources.unix , где впервые упоминается perl как замена awk и sed.
Кроме этого, можно сказать что perl дал сисадминам больше возможностей, чем shell, и более лёгкий способ достижения цели, чем C.
Потом, когда начали появляться интерактивные сайты, perl застолбил себе нишу на этом поприще. Тяжело было бы делать сайты на CGI при помощи shell скриптов или писать обработку запросов и работу с текстом на C.
Знаменитый девиз perl — «всегда есть несколько способов достичь чего-либо», поскольку perl хорошо демонстрирует, что для любых задач можно найти хорошие решения, если взглянуть на них под другим углом.
Читать дальше →

Работа с форматом JSON на языке PERL

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

Работа с форматом JSON на языке PERL.


Формат JSON

JSON(JavaScript Object Notation) – текстовый формат данных. Является альтернативой формата XML. На примере рассмотрим отличия форматов JSON и XML. Допустим, разработчику необходимо хранить информацию о студентах в приложении «Journal students». В листинге, представленном ниже, приведена реализация хранения данных с использованием формата XML.
<student>
  <name>Алексей</name>
  <surname>Алексеев</surname>
  <faculty>Экономический</faculty>
  <group>Э-51</group>
  <adress>
    <city>Москва</city>
    <street>Береговая</street>
    <house>2</house>
    <apartment>14</apartment>
  </adress>
</student>

<student>
  <name>Петр</name>
  <surname>Петров</surname>
  <faculty>Машиностроительный</faculty>
  <group>М-72</group>
  <adress>
    <city>Москва</city>
    <street>Речная</street>
    <house>12</house>
    <apartment>24</apartment>
  </adress>
</student>


Подобная структура данных представленная в формате JSON будет выглядеть следующим образом:
[
    {
        "name": "Петр",
        "surname": "Петров",
        "faculty": "Машиностроительный",
        "group": "М-72",
        "adress": {
            "city": "Москва",
            "street": "Речная",
            "house": "12",
            "apartment": "24"
    }   
},
{
        "name": "Алексей",
        "surname": "Алексеев",
        "faculty": "Экономический",
        "group": "Э-51",
        "adress": {
            "city": "Москва",
            "street": "Береговая",
            "house": "2",
            "apartment": "14"
        }    
    }
]

Постановка задачи

Необходимо написать скрипт на языке Perl, предназначенный для парсинга структуры данных формата JSON. Это необходимо для операций, производимых над данными из структуры формата JSON.
JSON и Perl

Для работы с форматом JSON используется библиотека JSON-2.53:
use JSON;

Подпрограмма decodeJSON, представленная ниже, предназначена для преобразования структуры данных формата JSON в структуру данных языка Perl (составленную из массивов и хэшей различной степени вложенности).
sub decodeJSON {
	my ($JSONText) = @_;
    my $hashRef = decode_json($JSONText);
    return @$hashRef;
}

Подпрограмма encodeJSON предназначена для преобразования структуры данных Perl в структуру данных формата JSON.
sub encodeJSON{
	my($arrayRef) = @_;
	$JSONText= JSON->new->utf8->encode($perl_scalar);
	return $JSONText;
}

Заключение

В результате получена структура данных Perl, для которой в дальнейшем будет написан следующий функционал:
• Добавление элементов;
• Удаление элементов;
• Редактирование данных элемента;
• Поиск необходимого элемента;

Система поиска плагиата

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

Предисловие


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

Другой вариант тоже был любопытным. Фирма сочиняла эссе и курсовые для американских студентов, которым в лом было писать самим. Уже потом я узнал, что это довольно распространенный и прибыльный бизнес, которому даже придумали собственное название — «paper mill», но сразу такой способ зарабатывания на жизнь показался мне полным сюром. Однако же надо заметить, что интересных задач на этой работе оказалось немало и среди них — самая сложная и хитрая из тех, что я делал за свою карьеру, и которой можно потом с гордостью рассказывать детям.

Формулировка ее была очень проста. Сочинители курсовых — удаленные работники, очень часто — арабы и негры, для которых английский язык был неродным, и ленивы они были ничуть не меньше самих студентов. Нередко они шли по пути наименьшего сопротивления и вместо написания оригинальной работы тупо передирали ее из Интернета, целиком или частями. Соответственно, надо было найти источник (или источники), сравнить, как-то определить процент сплагиаченности и передать собранные сведения для уличения нерадивых.

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

В качестве языка реализации был выбран Перл, что оказалось очень удачным. Ни на каком статическом компилируемом языке с их ригидностью и тормознутостью запуска решить эту задачу вообще было невозможно. Переписать готовое решение можно, а придти к нему путем многочисленных проб — никак нельзя. Ну и плюс куча отличных обкатанных библиотек.
Читать дальше →

Написание бота для Grepolis

Время на прочтение11 мин
Количество просмотров20K
image Добрый день. В этой статье я опишу написание бота для онлайн mmo strategy игры Grepolis. Учтите, что правилами игры использование подобных програм запрещено, за это банят, и не безпричинно. Просто у меня хобби писать боты для игр. А писать не запрещено. Кому интересны логика и реализация, прошу под кат.
Читать дальше →

Мигаем Scroll lock'ом при входящем email сообщении (perl + bash)

Время на прочтение3 мин
Количество просмотров8.5K
По мотивам этого вопроса.

Задача: научиться моргать светодиодом клавиатуры в случае, если есть новые непрочитанные сообщения в нашем почтовом ящике.

Доп. условия: ОС — linux, язык — perl (проверка почты) и bash (собственно моргание).

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

О том как перестать бояться и полюбить частые релизы

Время на прочтение5 мин
Количество просмотров13K
Надо сказать, что разработчики в принципе склонны не обращать внимание на такие мелочи как тесты и деплой. И ситуация которая на картинке ниже это даже не анекдот, а ситуация свидетели которой, думаю были многие.

image

Расскажу немного о разработке на моем текущем месте работы.

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

Metaobject Protocol для базового Perl 5

Время на прочтение8 мин
Количество просмотров6.1K
Идея создания Metaobject Protocol (MOP) для Perl 5 витала достаточно давно. Хорошо известна одна из реализаций — Class::MOP, которая используется в Moose. Но попасть в базовую поставку Perl 5 может лишь такое решение, которое будет совместимо с существующей объектной моделью и не будет перегружено излишними возможностями и зависимостями. На днях Stevan Little опубликовал первый пробный релиз на CPAN возможного кандидата на это вакантное место — модуль mop. Проект прошёл долгую эволюцию, за процессом внимательно следило сообщество. Давайте же рассмотрим, что получилось и какие последствия это может иметь для Perl 5.
Читать дальше →

Переход Почты Mail.Ru на 64-битную архитектуру: как это было

Время на прочтение4 мин
Количество просмотров38K
Уже несколько месяцев, как фронты Почты Mail.Ru стали 64битными. Лучше поздно, чем никогда, решили мы, и сегодня я расскажу, зачем мы это сделали, через что мы ради этого прошли и как нам это удалось.



И так работает

Долгое время наша Почта работала на 32 битах на первом Apache и Perl 5.8 под управлением CentOS 5. Идея перевести фронтенд на более современное ПО и 64-битную архитектуру бродила в наших умах давно: еще полтора года назад всего два человека — один админ и один разработчик — за какую-то неделю без сна подняли тестовый сервер, на котором крутилось наше светлое будущее. Однако в те времена у нас были более срочные задачи, и про сервер благополучно забыли. Периодически к этой идее возвращались, но все происходило в режиме «А что если так? — Ой, что-то сломалось!», — и снова все откатывалось и откладывалось в долгий ящик.
Читать дальше →

Coro и ещё одна реализация rouse-callback

Время на прочтение8 мин
Количество просмотров4.2K
Есть в CPAN такое замечательное семейство модулей — Coro. Эти модули позволяют программировать на перле с использованием корутин.
Читать дальше →

Реализация голосового меню на perl через usb модем Huawei e1550

Время на прочтение14 мин
Количество просмотров11K
Совсем недавно я написал пост в котором дал немного теории, и описал практическую реализацию скрипта производящего голосовой обзвон (оповещение) абонентов по списку через usb модем Hyawei e1550. В одном из комментариев был задан вопрос о том как получить во время голосового соединения данные о нажатии кнопок на телефоне абонента. Детальное изучение этого вопроса и привело к созданию этого поста.

В данной статье будет представлена реализация голосового меню, с функциями:
— записи голосового сообщения
— выполнения системных команд
Все это стало возможным благодаря реализации декодера DTMF сигналов основанного на алгоритме Гёрцеля.
В качестве бонуса — архив исходниками голосового меню.
Читать дальше →

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

Perl Golf от REG.RU на YAPC::Europe 2013

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


С 12-го по 14-е августа в Киеве прошла очередная конференция perl-разработчиков YAPC::Europe 2013. Расширяющие сознание доклады, инсайдерская информация от разработчиков Perl 5 и Perl 6, живые легенды из мира Perl (включая самого Ларри Уолла!), речной круиз и замечательное общение в пабах кулуарах — всё было. Мероприятие заслуживает самой высокой оценки, а организаторы и докладчики (да и все остальные участники конференции) — всяческих похвал и благодарностей.

Однако, общеизвестно, что кроме обычных человеческих радостей perl-программисты склонны к развлечениями особенным, нормальным «хомо сапиенсам» не всегда понятным и близким.

Итак, как мы устроили Perl Golf на YAPC, и что из этого вышло.
Читать дальше →

perl скрипт производящий голосовой обзвон (оповещение) через usb модем huawei e1550

Время на прочтение17 мин
Количество просмотров42K
В свое время, так как я много времени проводил в командировках, мной была приобретена замечательная игрушка — usb модем Huawei e1550. Но времена лихой молодости прошли, и необходимость в использовании данного девайса по прямому назначению отпала. Так он и пылился у меня на полке в течении нескольких лет. И пылился бы и дальше, но возникла задача сделать систему оповещения. Тут я и вспомнил про модем. Рассмотрев поставленную задачу — был вынужден отказаться от SMS оповещения в пользу голосового дозвона по причине невозможности получить уведомление о прочтении SMS. Решения на базе Asterisk показались мне несколько громоздкими, и почитав доку по модему я решил написать звонилку самостоятельно.

Причина публикации.

Несмотря на обилие статей по работе с USSD и SMS запросами, я не нашел ни одной реализации голосовых вызовов на скриптовых языках (таких как Perl, PHP, Node.js). Надеюсь данная статья будет для Вас хорошим подспорьем.
Читать дальше →

Хакаем Transcend WiFi SDHC карту памяти

Время на прочтение10 мин
Количество просмотров147K
Перевод немного вольный, но смысл не потерян. Я (переводчик) заинтересовался этой карточкой давно и почти сразу заказал её, сегодня забрал с почты и не могу нарадоваться, но хочется больше, чем дает Transcend, а карточка, между прочим, Linux сервер с WiFi! Очень много буковок.

С недавнего времени я стал счастливым обладателем карты памяти Transcend WiFi SD, которая позволяет мне передавать фотографии с моей «зеркалки» (которая вообще то Sony NEX, зато компактная) на любое устройство с WiFi за несколько секунд. А так как мне нравится делать фотографии и делиться с ними на лету, то SD карточка, умеющая без проводов передавать картинки на мой телефон, кажется прекрасным решением. И это было так! (хотя всё еще так). Мобильное приложение может… не, должно быть получше (зачем скачивать 7МБ картинку для просмотра, чтобы потом ЕЩЕ раз скачать её, нажав на «Скачать»?), но вообще оно делает своё дело!
Читать дальше →

Вникаем в нюансы программирования Request Tracker

Время на прочтение3 мин
Количество просмотров8.7K
Привет, Хабраюзер!
В данной теме я расскажу о принципах построения системы request tracker с точки зрения программирования, т.к. это достаточно хорошая система учета заявок и может быть использована на крупном предприятии в качестве helpdesk-системы.

Кому интересно — добро пожаловать под кат.
Читать дальше →

Perl6 — Ещё немного о блоках (Phasers)

Время на прочтение4 мин
Количество просмотров2.9K
1. Особенности работы с переменными и литералами в Perl6
2. Perl6 — Операции над переменными, анонимные блоки
3. Perl6 — Условные операторы, циклы
4. Perl6 — Работа с функциями
5. Perl6 — Классы
6. Perl6 — Ввод-вывод, модули
7. Perl6 — Комментарии, пробельные символы, скобки
8. Perl6 — Перегрузка операторов
9. Perl6 — Работа с типами данных
10. Perl6 — Обработка исключений
В прошлой статье мы говорили об отлове исключений, что происходило в специальном вложенном блоке CATCH. На самом деле этот блок является особой разновидностью — Phasers (я просто не могу перевести это слово). Phasers — это специальные вложенные блоки, которые выполняются при определенных условиях. С чем же их готовить увидите под катом.
Читать дальше →

Вся правда о UTF-8 флаге

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


Распространённое заблуждение состоит в том, что строки символов, в отличие от строк байтов, имеют UTF-8 флаг установленным.
Многие догадываются, что если данные являются ASCII-7-bit, то UTF-8 флаг просто не важен.

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

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

Perl6 — Обработка исключений

Время на прочтение4 мин
Количество просмотров6K
1. Особенности работы с переменными и литералами в Perl6
2. Perl6 — Операции над переменными, анонимные блоки
3. Perl6 — Условные операторы, циклы
4. Perl6 — Работа с функциями
5. Perl6 — Классы
6. Perl6 — Ввод-вывод, модули
7. Perl6 — Комментарии, пробельные символы, скобки
8. Perl6 — Перегрузка операторов
9. Perl6 — Работа с типами данных
В прошлой статье я заикнулся об отлове исключений. Немногие скрипты, что встречались с исключениями, выживали, и слишком много моих скриптов погибло от их рук. Пожалуй, настало время устроить на них охоту. Для тех кому интересно, чем же мы будет их ловить — встречаемся под катом.
Читать дальше →

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