Все потоки
Поиск
Написать публикацию
Обновить
0.7

Perl *

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

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

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

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

Perl6 — Работа с типами данных

Время на прочтение2 мин
Количество просмотров3.3K
До сих пор в статьях было лишь поверхностное упоминание о типах данных — объявление переменной определенного типа, либо указание результата операции, но все что мы могли, это лишь терпеть выходки компилятора — «хочу умру (die), захочу варнинг кину, или просто поменяю тип».
Собственно, для тех кто хочет почувствовать себя богом хоть как-то важным в управлении типами в своем же скрипте, добро пожаловать под кат.
Читать дальше →

Perl6 — Перегрузка операторов

Время на прочтение3 мин
Количество просмотров4.1K
За продолжением под кат

Perl6 — Комментарии, пробельные символы, скобки

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

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

Moscow.pm в офисе Mail.Ru Group: о Play Perl и предрассудках Perl-программистов

Время на прочтение3 мин
Количество просмотров7.3K
4 апреля мы открыли двери своего офиса для встречи сообщества московских Perl-программистов Moscow.pm.

На встрече выступили программист проекта Деньги Mail.Ru Елена Шишкина, руководитель направления в проекте Почта Mail.Ru Владимир Перепелица и разработчик поиска по блогам Яндекса Вячеслав Матюхин.
Читать дальше →

Удлинитель субтитров формата SubRip (.srt)

Время на прочтение3 мин
Количество просмотров8.3K
Если у человека есть практика общения на иностранном языке и понимания на слух, субтитры для него — всего лишь подспорье, значение которого зависит от разборчивости, нормативности, сложности и скорости речи на экране. Но если человек всего лишь сносно читает на иностранном, субтитры для него — основной источник информации.

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

Поэтому я попробовал написать простые скрипты только под эту нужду и выбрал два принципа удлинения времени.
Читать дальше →

«Жемчужный» доступ к 1С: Предприятию 8.2

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

Думаю, всем вам известен такой программный продукт, как 1С: Предприятие 8.2. И, наверное, многим из вас известен тот факт, что к 1С: Предприятию можно подключиться, используя OLE/COM-соединение. А многие ли из вас знают, что с помощью OLE/COM-соединения можно не только выполнять программный код 1С, но и “управлять” сервером 1С: Предпрития? К примеру, можно подключиться к Агенту кластера серверов 1С: Предприятия, получить список открытых клиентских сессий, прочитать информацию о выданных им лицензиях… К тому же, наличие варианта подключения посредством OLE/COM-соединения расширяет в арсенале программиста добавляет возможность выбора языка программирования, отличного от встроенного языка 1С: Предприятия. Можно выбрать любой язык, который способен работать с OLE/COM-компонентами: будь то VB.Net, C#.Net, или Java, или даже… Perl. Да, вы не ослышались. Именно Perl.
Итак…

Задача.


Необходимо реализовать автоматический рестарт службы Агент сервера 1С: Предприятия 8.2 с помощью планировщика задач Windows. Но перед рестартом необходимо проверить, не работает ли кто-нибудь в базе Base, расположенной на сервере 1С: Предприятия. Если кто-нибудь работает, то перезапуск службы недопустим.

Заинтересовались?

Голосовое дерево для Asterisk с помощью Perl AGI

Время на прочтение3 мин
Количество просмотров5.2K
Добрый день, уважаемые читатели.

Хочу поделиться своим примером создания голосового меню для Asterisk при помощи Perl AGI.

После прочтения статьи Голосовое дерево на Asterisk своими руками у меня возникло несколько замечаний к предложенному в этой статье методу реализации голосового меню.
Основная моя претензия сводится к тому, что позвонивший абонент вынужден выслушать меню до конца, а лишь затем мы позволим ему нажать одну из предложенных клавиш. Если же он ошибётся, нажав не ту клавишу, то ему придётся слушать меню ещё раз.
Как мне кажется, абоненту это быстро надоест.

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

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

Остальное опишу в приведённом примере.
Читать дальше →

Вычисление рекуррентных соотношений на Perl

Время на прочтение3 мин
Количество просмотров4.7K
Привет,
в этом посте я расскажу рецепт добавления функциональности в Перл.

Как уже стало понятно из названия, мы будем вычислять рекуррентные соотношения.
Например, формулы для вычисления факториала выглядят вот так:
f(0) = 1
f(n) = n * f(n-1)


Функциональные языки программирования позволяют определять такие функции достаточно просто, в Erlang это делается следующим образом:
factorial(0) ->
    1;
factorial(N) ->
    N * factorial(N-1).


А теперь попробуем сделать нечто похожее, что позволяло бы нам писать код вида:
#!/usr/bin/perl -I./lib
use strict;
use bigint;
 
use Recurrent;
 
recurrent fac => {
    arg(0) => lambda { my($n) = @_; return 1 },
    arg(n) => lambda { my($n) = @_; return $n * fac($n-1) },
};
 
print fac(100);

Из примера видно, что у нас появились новые функции recurrent, arg, n и lambda. На самом деле, практическая польза есть только у recurrent, все остальные нужны лишь для получения более «красивого» кода.

Давайте напишем модуль Recurrent.pm
Читать дальше →

Ещё один способ отстрелить себе ногу в Perl

Время на прочтение1 мин
Количество просмотров12K
Посмотрим на код:

use strict;
use warnings;

sub mysub($$)
{
    my ($a, $b) = @_;
    print "$a\n";
    print "$b\n";
}
my $x = undef;
mysub($x && $x->[0] =~ /abc/, $x = []);


Может ли mysub в качестве первого аргумента получить нечто, что в boolean контексте является истиной?
Читать дальше →

HTML::TokeParser

Время на прочтение5 мин
Количество просмотров12K
Одним из наиболее часто используемых мною модулем при парсинге HTML является HTML::TokeParser. Этот модуль разбивает весь HTML документ на токены, с которым позже можно удобно работать.

Давайте рассмотрим какой-либо пример на практике. Возьмем сайт habrahabr.ru
Читать дальше →

Насколько вы подвержены тупняку, и немного holywar

Время на прочтение3 мин
Количество просмотров14K
Случайно услышал рассказ одного коллеги другому о том, что в скриптовых языках все очень клево и удобно. Рассказчик пропагандировал perl, как что-то очень крутое, простое и понятное.
Не удержался и встрял, сказав, что python попонятнее будет, а возможностей предоставляет совсем не меньше.
Дальше меня спросили, как в python обстоят дела с регулярными выражениями, и в результате пришли мы к такой задаче:

Есть строка, необходимо вывести все слова в ней, которые встречаются N раз.

Задачка конечно совсем тривиальная и написание решения занимает считаные минуты, но этот тупняк поглотил всех как минимум на несколько часов. Если вы поддаетесь тупнячкам, то прошу пожаловать подкат
Читать дальше →

Работа с кодировками в Perl

Время на прочтение10 мин
Количество просмотров57K
На хабре уже есть хорошая статья об использовании UTF-8 в Perl — habrahabr.ru/post/53578. Я все же немного по своему
хотел бы рассказать о кодировках.

Очень много вопросов связано с многообразием кодировок, а также используемой терминологией. Кроме того, многие из нас сталкивались с проблемами, которые связаны с кодировками. Я постараюсь в этой статье написать в понятной форме информацию по этому вопросу. Начну с вопроса автоматического определения кодировки текста.
Читать дальше →

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

Языку программирования Perl сегодня исполнилось 25 лет

Время на прочтение2 мин
Количество просмотров14K
18 декабря 1987 года лингвист Ларри Уолл опубликовал в ньюс-группе comp.sources.misc первую версию языка программирования Perl — Perl 1.0.0.

Название языка представляет собой аббревиатуру, которая расшифровывается как Practical Extraction and Report Language — «практический язык для извлечения данных и составления отчётов». Perl создавался как более удобная альтернатива для sh, awk и sed, но к настоящему времени вырос в нечто большее, чем просто утилита для построчного разбора текстового потока. Сейчас Perl широко используется в системном администрировании, веб-разработке, сетевом программировании, играх и многих других областях.

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

Perl6 — Ввод-вывод, модули

Время на прочтение3 мин
Количество просмотров4.9K
1. Особенности работы с переменными и литералами в Perl6
2. Perl6 — Операции над переменными, анонимные блоки
3. Perl6 — Условные операторы, циклы
4. Perl6 — Работа с функциями
5. Perl6 — Классы

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

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

Почему мотоцикл не смог заменить танк, или перевод сайта REG.RU с Template::Toolkit на Text::Xslate

Время на прочтение7 мин
Количество просмотров5.8K
За любым крупным интернет-проектом стоит автоматизированная информационная система и сайт, продающий товары или услуги. Чем крупнее проект, тем сложнее логика сайта, и тем большую нагрузку ему приходится нести. Возникают задачи увеличения «мощности» сайта и уменьшения времени отклика страниц. Как и все, кто пишет подобные системы, периодически мы проводим сессии по тюнингу скорости работы нашего сайта. Оптимизируем всё, до чего можем дотянуться. На определённом этапе упёрлись в скорость работы HTML-шаблонизатора, который сходу не совсем понятно как «разогнать». Кое-что удалось выжать с помощью кэширования подшаблонов, но, несмотря на полученные позитивные результаты, время работы шаблонизатора всё равно оставалось краеугольным камнем в скорости генерации страниц. Нужны были более радикальные меры, возможно даже другие шаблонизаторы…

Об истории одной из наших инициатив в нелёгком деле поиска Святого Грааля самого быстрого шаблонизатора читайте ниже в подробном отчете Дмитрия Карасика, который был привлечён к решению этой задачи:

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

Мой первый клиент мертв

Время на прочтение5 мин
Количество просмотров122K
Примечание редактора: Джеймс Альтухер — инвестор, программист, автор и предприниматель. Он инвестировал в 25 стартапов и написал 10 книг. Последними вышли книги «Я был слеп, но сейчас прозрел» и «40 альтернатив колледжу».


Я был одинок и хотел денег. Я жил в однокомнатном номере в Астории, район Куинс Нью-Йорка в 1995-м и не знал никого в округе. Я писал свой номер телефона на двухдолларовых купюрах, которые оставлял на чай официанткам, но ни одна мне не звонила. В Астории жили одни греки, а те предпочитали свою тусовку. Никто не заговаривал со мной. Я мог наворачивать мили по Астории в надежде найти собеседника.

Выходные были хуже всего. Я скучал по друзьям на работе. Музей кинематографии находился совсем рядом, и я ходил туда посмотреть всякие инди-фильмы. Помню две вещи: ретроспектива Хэла Хартли была великолепна, а коллекция свитеров Билла Косби, которые тот носил на своих шоу 80-х, выставлялась на заметном месте. Женщина-билетер не любила меня, так как я всегда заходил бесплатно по карточке работника HBO.



У меня было 20 баксов на счету в банке. Я жил от зарплаты до зарплаты. Я бродил по всему Манхэттену и думал про себя: кто все эти миллионы людей, что могут позволить себе здесь жить, а я не могу.
Читать дальше →

Псевдо веб сокеты

Время на прочтение8 мин
Количество просмотров12K
     Вдохновившись вот этой статьёй о Socket-соединениях в Веб-приложениях, решил сделать более-менее универсальный модуль с удобным интерфейсом, реализующий эту технологию.
     В этой статье под словом «сокет» имеется ввиду програмный интерфейс, который обеспечивает обмен данными между серверным и клиентским скриптами, с возможностью клиентского постоянно «слушать порт». Другими словами, как только что-то произошло на сервере, он может тут же сообщить об этом клиенту, и наоборот. Конечно же, в javascript нет возможности «слушать порты» и создавать полноценные сокеты, но зато у нас есть спички, изолента и пластилин, из которых можно смастерить какое-то подобие.
     Сначала я опишу примерный принцип действия этой системы, а затем, по традиции, приведу код примитивного чата построенного на её основе, с, конечно же, ссылкой. Хотелось бы увидеть своими глазами хабраэффект в действии. Ещё в конце будет ссылка на репозиторий с исходниками.

читать дальше

Простой способ подготовки отчетов на основе rtf-бланков

Время на прочтение4 мин
Количество просмотров16K
При практической эксплуатации информационных систем уровня предприятия, особенно при недостаточно развитой системе подготовки отчетов, часто бывает необходимо заполнить разного рода бланки (например, заявления, справки, заключения и т.д.) или подготовить отчеты для распечатки на лазерном принтере, примерно в таком виде:

Пример rtf-бланка
Заголовок документа: PARAM1
Строка 1 Значение PARAM2
Строка 2 Значение PARAM3

Подпись под документом: PARAM4

Рис.1 Пример бланка в виде rtf-файла, переменные описаны в виде полей типа “QUOTE” – PARAM1,PARAM2,PARAM3,PARAM4

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

Perl6 — Классы

Время на прочтение4 мин
Количество просмотров5K
1. Особенности работы с переменными и литералами в Perl6
2. Perl6 — Операции над переменными, анонимные блоки
3. Perl6 — Условные операторы, циклы
4. Perl6 — Работа с функциями

Последние несколько дней я читал раздел по работе с объектами в Perl6. К сожалению я так и не смог понять некоторые моменты, и надеюсь что те кто уже смог их понять подскажут, в чем же дело. Как и раньше, все описанные возможности будут сопровождаться небольшими экспериментами или примерами, чтобы пояснить как это работает, или как нужно использовать.
Приступим:
Читать дальше →

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