Хабрахабр: Метки / perl: use bigint в perl
В зависимости от версии мантисса целых чисел в perl 40-бит (5 байт) или 64-бит (8 байт).
Проверить сколько бит отводится на число в текущем perl довольно просто:
Читать далее
В зависимости от версии мантисса целых чисел в perl 40-бит (5 байт) или 64-бит (8 байт).
Проверить сколько бит отводится на число в текущем perl довольно просто:
Читать далееПредставлен выпуск Rakudo 2022.02, компилятора для языка программирования Raku (бывший Perl 6). Проект был переименован из Perl 6 так как не стал продолжением Perl 5, как ожидалось изначально, а превратился в отдельный язык программирования, не совместимый с Perl 5 на уровне исходных текстов и развиваемый отдельным сообществом разработчиков. Одновременно доступен выпуск виртуальной машины MoarVM 2022.02, формирующей среду для запуска скомпилированного в Rakudo байт-кода. В Rakudo компиляция также поддерживается для JVM и некоторых виртуальных машин для JavaScript.
Представлен выпуск Rakudo 2021.12, компилятора для языка программирования Raku (бывший Perl 6). Проект был переименован из Perl 6 так как не стал продолжением Perl 5, как ожидалось изначально, а превратился в отдельный язык программирования, не совместимый с Perl 5 на уровне исходных текстов и развиваемый отдельным сообществом разработчиков. Одновременно доступен выпуск виртуальной машины MoarVM 2021.12, формирующей среду для запуска скомпилированного в Rakudo байт-кода. В Rakudo компиляция также поддерживается для JVM и некоторых виртуальных машин для JavaScript.
Набор утилит для потоковой обработки текста появился уже в первых версиях Unix и доступен практически везде. Это такие команды как cat/tac, head/tail, cut, grep, sed, sort, uniq, wc, nl, fmt. Каждая из этих утилит выполняет свою простую обработку текста, но комбинируя их в конвейере, т.е. передавая стандартный вывод одной команды на вход следующей, можно обрабатывать тексты произвольного размера или быстро решить некоторые задачи.
Для этого нужно усвоить несколько приемовРазработчики компилятора Rakudo для языка программирования Raku (бывший Perl 6) опубликовали релиз 2021.10. Одновременно доступен новый выпуск виртуальной машины MoarVM 2021.10, формирующей среду для запуска скомпилированного байт-кода. Также компиляция поддерживается для JVM и некоторых виртуальных машин для JavaScript.
В perl есть выражение local. Оно подменяет указанное значение undef-ом до конца блока. В качестве значения могут выступать глобальные хеши, массивы и скаляры, а так же элементы или срезы хешей и скаляров.
Проблема в том, что хеши пакетов local не сохраняет.
Под хешами пакетов я понимаю хеш с двоеточием на конце (%Пакет::)
в котором хранятся символы пакета (GLOB).
Когда-то я был впечатлён периодической таблицей операторов perl6. Однако для perl такую таблицу делать не спешат.
Представляю Вашему вниманию свою разработку.
Читать далее
На днях делал отсечение элементов списка не подходящих под регулярку введённую пользователем:
...
my $re = get_text_in_filter();
@list = grep { /$re/i } @list;
...
$re
был пустой строкой и в @list
должны были остаться все элементы.
Так и происходило при первом проходе, а при втором регулярка не пропускала ни одного элемента списка.
Читать далее
Когда-то я стал писать на perl из-за встроенных в язык регулярных выражений. Просто пишешь "abc" =~ / (?<x> a) /x;
и вуаля: устанавливаются переменные $&, $1, %+, $`, $'
.
Однако эти же переменные перезаписываются при использовании следующей регулярки:
Читать далее
Современные web-приложения в большинстве случаях хранят данные в SQL базах данных. Для доступа к этим данным используются объекты модели, которые позволяют совершать все основные операции: SELECT, INSERT, UPDATE, DELETE, но не ограничиваясь ими.
В этой части мы поговорим про работу с базой в Dancer2, а также научимся создавать модели и миграции на основе DBIx::Class (можно сказать, что эта статья является вводным руководством и по нему).
Читать далее
В очередной раз задумался о том, какие строки оптимальней использовать в основном коде: characters или octets.
Обычно мне очень редко приходиться работать непосредственно с unicode. Когда нужно, я преобразовываю octets в characters, а затем обратно.
Но HTML::Parser требует на вход unicode, и JSON::XS корректно работает только с unicode. Поэтому хоть непосредственно я сам не использую characters, приходиться перекодировать при помощи модуля Encode.
Кроме этих модулей, обычно все работают с octets.
А вот при работе над магазинчиком вышивки бисером и нитками Embroidery Kits выяснилось, что остальные используемый модули могут работать как с octets, так и с characters (кроме Digest::SHA).
HTML::Parser и JSON::XS перетянули одеяло на себя. Задумался.
P.S.
Utf8 флаг в сложных структурах данных расставляю, сбрасываю при помощи нижеприведенного кода.
use Encode;
use Scalar::Util qw(looks_like_number);
sub data_walk($$);
sub data_walk($$) {
my ($d,$s) = @_;
if (ref $d eq "ARRAY") {
$d = [ map { data_walk($_, $s) } @$d ];
} elsif (ref $d eq "HASH") {
$d = { map { $s->($_) => data_walk($$d{$_}, $s) } keys %$d };
} elsif (not ref $d) {
$d = $s->($d)
}
return $d;
}
sub data_encode_utf8 { data_walk(shift,
sub {
my $data = shift;
if ($data and not looks_like_number($data)) {
$data = Encode::encode_utf8($data) if Encode::is_utf8($data);
}
return $data;
}
)
}
sub data_decode_utf8 { data_walk(shift,
sub {
my $data = shift;
if ($data and not looks_like_number($data)) {
$data = Encode::decode_utf8($data, Encode::FB_QUIET) unless Encode::is_utf8($data);
$data ||= "ERROR: FOR SOME REASON, TEXT CONVERSION TO UTF8 FAILED";
}
return $data;
}
)
}
Лето близится к концу, однако ещё остались дни, чтобы насладиться солнцем, отпуском, Perl и Dancer2. Последним двум будет посвящена эта статья. Сегодня поговорим про шаблоны, сессии и флэш-сообщения.
Читать далееУправляющий совет организации Perl Foundation изучил действия и процессы, связанные с работой команды по делам сообщества (CAT, Community Affairs Team) и решил приостановить работу данной группы до формализации всех связанных с её работой процессов и официального утверждения полномочий данной группы. Совет также отменил два ранее опубликованных отчёта об инцидентах, на основе которых были приняты меры в связи с ненадлежащим поведением некоторых участников сообщества при проведении обсуждений на платформе Slack.
Perl, созданный аж в 1987 году, в 2021 продолжает успешно применяться в различных сферах IT. А вместе с фреймворком Dancer и с задачей создания web-приложения справляется легко и непринужденно.
Читать далее
Наткнулся на gihub на использование оператора //= Ни разу раньше не видел его использования.
К сожалению, сам не нашел мануал, что он означает и тестами до конца не понял . По тестам вижу, что в отличие от ||= проверяет переменную на определенность, а не ложь/истина. Но у меня работает это с числами, а со строками после операции получаю undef.
Можете подсказать, что делает этот оператор присваивания?
Я отношу себя к поколению "диких сетевиков", которые в начале века начинали строить сети различного масштаба на постсоветском пространстве. Не хватало всего - денег, образования, специалистов, оборудования ... Зато энтузиазма и самоуверенности было немерено. Лепили сети из чего попало, или из того на что хватало денег. Как сейчас помню тот день, когда купил свой первый L2 коммутатор - знаменитый DES-3526.
Естественно в какой-то момент происходит качественный рост, и появляется необходимость весь этот сетевой зоопарк мониторить. Методов и софта для мониторинга настолько много, что даже только их перечисление и краткие характеристики займут не одну статью.
Читать далее
Когда-нибудь я напишу что-то в духе "Как я стал программистом в 40 лет". Но точно не сегодня, к тому же мне давно уже не 40 и программистом я себя не считаю. А рассказать я хотел бы о своём опыте разработки PBX для собственных нужд. В качестве VoIP движка используется Yate, фронт- и бэкенд будет на Perl.
Часто встречаю в комментариях к статьям вопросы: "Почему не (далее идут любимые варианты комментаторов)?". Итак, по порядку.
Читать далееПосле 11 месяцев разработки состоялся релиз новой стабильной ветки языка программирования Perl - 5.34. При подготовке нового выпуска было изменено около 280 тыс. строк кода, изменения затронули 2100 файлов, в разработке приняли участие 78 разработчиков.
Sawyer X объявил об уходе из руководящего совета проекта Perl и из Core Team. Он также покинул пост ответственного за формирование релизов Perl, прекратил участие в комитете, выделяющем гранты, отказался от выступления на конференции Perl и удалил свою учётную запись в Twitter. При этом Sawyer X выразил готовность довести до конца находящийся в разработке релиз Perl 5.34.0, запланированный на май, после чего удалить свой доступ к GitHub, CPAN и спискам рассылки.
Прим. перев.: в конце января стало известно о том, что один из основных доменов языка программирования Perl — Perl.com — был угнан. Это вызвало смешанную реакцию в сообществе как любителей языка, так и его противников. Теперь, когда всё уже позади и справедливость восстановлена, один из самых известных сторонников Perl — brian d foy — рассказал о том, что же произошло и как сообщество добилось положительного исхода событий. Представляем вниманию перевод его заметки.
Читать далееБрайан Фой (brian d foy), основатель организации Perl Mongers, опубликовал подробный разбор инцидента, в результате которого домен perl.com был захвачен посторонними лицами. Захват домена не затронул серверную инфраструктуру проекта и был совершён на уровне смены владельца и замены параметров DNS-серверов у регистратора. Утверждается, что компьютеры ответственных за домен также не были скомпрометированы и атакующие пользовались методами социальной инженерии для введения регистратора Network Solutions в заблуждение и смены данных о владельце, используя фальшивые документы для подтверждения прав на владение доменом.
Разработчики языка программирования Perl сообщили об успешном завершении процесса возвращения домена perl.com, который был захвачен посторонним лицом после компрометации учётной записи. Возвращение домена было усложнено тем, что после получения контроля над доменом атакующие несколько раз сменили регистратора - из области ответственности компании Network Solutions домен был переведён вначале китайскому регистратору Bizcn, а затем передан на обслуживание регистратору Key-Systems GmbH.
Брайан Фой, эксперт по Perl, сообщил, что домен сайта Perl.com был захвачен неизвестными хакерами.
Он опубликовал сообщение на Reddit: «Мы все еще пытаемся разобраться, и я не могу вдаваться в подробности. Однако, похоже, что это был взлом аккаунта».
Читать далее
Чем дальше в сторону от веба, тем более комьюнити в перле какие-то чудаки на плохую букву.
На столько часто сталкиваюсь с этим в последнее время, что всерьез начинаю думать о смене религии на питон.
Такие дела.
Опять же, к чему угодно современному на питоне биндинги сейчас отличные есть, а под перл если и напишут вообще - исключительно странное и с своеобразной документацией.
Объявлены итоги выборов управляющего совета, который пришёл на смену единоличному лидеру проекта Perl. Участниками Core Team избраны три заслуживающих доверия сообщества разработчика, которые теперь будут принимать решения, связанные с развитием Perl. В совет вошли Ricardo Signes, Neil Bowers и Sawyer X.
Ключевые разработчики языка программирования Perl одобрили документ perlgov.pod, регламентирующий новую модель управления проектом. В качестве основы была использована утверждённая два года назад модель управления разработкой Python.
Недавно я увидел весьма интересную статью - Perl is Dead. Python is the New Java. В тексте много спорного, включая вставку про отладку, в которой слишком много фанатизма, но идея в заголовке, вполне возможно, и даже вероятно, сейчас правильная.
Мне последнее время приходится немножко читать/писать на питоне и я нахожу весьма удивительным, что при общей похожести очень многие вещи в нем принято делать значительно иначе и совсем не так, как в перле, и какая-либо совместимость для, например, миграции отсутствует напрочь. Это весьма неудобно - мне как раз приходится какие-то вещи переписывать с питона на перл, и другие вещи, наоборот, с перла на питон.
Например, для традиционных pack/unpack и printf/sprintf используются совершенно разные шаблоны (т.е. при одном и том же значении буквы в шаблонах отличаются полностью и означают совсем другое), причем перловый вариант, кажется, примерно полностью совпадает с классическим Си.
При этом printf/sprintf в чистом виде в питоне как бы отсутсвует, а для паддинга строк, например, видимо принято делать str(...).zfill(...).
Надо признать, что это и многое другое в питоне начинает казаться значительно более юзерфрендли, чем в перле. Серьезно, невозможно помнить наизусть шаблоны для pack/unpack и printf/sprintf, если не пишешь что-то с ними каждый день, в то время как, наример, str(...).zfill(...), наоборот - невозможно забыть.
Любопытно и то, что в Raku, судя по всему, подобные неинтуитивности исправлены.
Это эссе явилось развитием бесед с несколькими разработчиками на тему предвзятого отношения к Java. Это не критика Java, а скорее, наглядный пример «хакерского радара».
Со временем, хакеры развивают нюх на хорошие — или же плохие — технологии. Полагаю, может оказаться интересным попробовать изложить причины, по которым Java кажется мне сомнительной.
Кто-то из прочитавших расценивал это как заслуживающую внимания попытку написать о чем-то, о чем раньше никто не писал. Другие же предостерегали, что я пишу о вещах, в которых ничего не смыслю. Так что на всякий случай, хотел бы уточнить, что я пишу не о Java (с которой я никогда не работал), но о «хакерском радаре» (о котором много размышлял).
Читать дальше →
Git умеет «из коробки» раскрашивать то, что выводит в консоль, а Subversion — нет. Надоело руками каждый раз перенаправлять вывод svn diff в colordiff — написал простенькую раскрашивалку. Когда-то умела красить только вывод подкоманды status, теперь понимает blame (praise, annotate, ann), diff (di), help (?, h), status (stat, st) — и сами подкоманды, и их синонимы.
https://github.com/shoorick/svn-st-color
Прочитав новость "Код интерпретатора Perl официально перенесён на GitHub" на ресурсе LINUX.ORG.RU я решил взглянуть на репозиторий Perl 5, который теперь уже находится на GitHub'е.
Удивительно, как трепетно и качественно его перенесли, сохранив не только абсолютно всю 32-летнюю историю проекта, но и багрепорты (попали в Issues), патчи (попали в PRs), релизы и ветки. Надпись "32 years ago" рядом с файлами вызывает невольную улыбку.
Что ещё делать в этот унылейший пятничный вечер, когда на улице неприятно моросит дождь со снегом, а все уличные дорожки погрязли в осенней слякоти? Правильно, красноглазить! Так что я ради эксперимента и интереса решил взять и собрать древний Perl на современной x86_64-машинке с последней версией GCC 9.2.0 в качестве компилятора. Сможет ли такой старый код пройти проверку временем?
Скачать файл с кодом и данные можно в оригинале поста в моем блоге
Существует очень интересный проект — «Розеттский Код». Их цель — «представить решение одинаковых задач на максимально возможном числе различных языков программирования для того, чтобы продемонстрировать их общие места и различия и помочь человеку обладающему знаниями по решению проблемы одним методом узнать другой».
Этот ресурс предоставляет уникальную возможность сравнить коды программ на разных языках, этим мы и займемся в этой статье. Она является полной переработкой и доработкой статьи Джона Маклуна "Code Length Measured in 14 Languages".
Читать дальше →
Выложил в github в public проект stdin2news . Для unix way ftn с фидогейтом, ньюзсервером и прочими печеньками. :) в гугле: "grey-olli stdin2news github" , прямой линк: https://github.com/grey-olli/stdin2news
Однажды в телеграм чат питерского сообщества линуксоидов SPbLUG я кинул забавную задачку:
Выведите список файлов в домашней директории максимально возможным количеством способов, без использования ls или его алиасов(1 способ — 1 балл)
В детстве я мечтал стать Марком Цукербергом. Пока мои друзья грезили профессиями летчиков, врачей и космонавтов, я планировал запрограммировать самую большую ИТ-компанию. Марк Цукерберг ещё не родился, а я уже хотел им быть.
Читать дальше →
Открытие дня, цитирую:
To people wondering why this syntax persisted so long: the bug produced by this syntax was actually the only way to have state variables, before the keyword state
was introduced. This is why the bug was not fixed. Some people actually used it as a short syntax to implement a state variable:
$ perl -E 'sub flip_flop { my $t if 0; $t = !$t; say $t ? "flip" : "flop"} flip_flop() for 1..4'
flip
flop
flip
flop
https://dev.to/dams/comment/c3mi
А мне то казалось, что так просто код выглядит читабельнее в ряде случаев...
Rate Tree Gumbo pure Gumbo Gumbo cb SAX
Tree 46/s -- -63% -72% -80% -87%
Gumbo pure 122/s 167% -- -24% -47% -64%
Gumbo 161/s 252% 32% -- -30% -53%
Gumbo cb 230/s 403% 89% 43% -- -32%
SAX 339/s 642% 178% 111% 47% --
SAX - это HTML::Parser
Tree - HTML::TreeBuilder
Gumbo - HTML::Gumbo with tree output format
Gumbo cb - HTML::Gumbo with callback output format
есть ли какие нибуть облачные провайдеры поддерживающие cloud function на perl ?
(запуск perl через nodejs не предлагать)
нашел тут «готовый» компилятор — вдруг сгодится чтоб не писать компилятор с php
— кто пользуется?
— оно вообще рабочее? (судя по датам релизов около 9 лет уже пилят)
— насколько адекватный код получается — опять эмуляция perl рантайма или нормальный перевод на java типы и классы?
Прим. пер.: Встретил сегодня в твиттере очень забавный, на первый взгляд, тред. А потом пригляделся и понял, что он не только забавный, но и занятный. А раз уж так сложилось, что сегодня пятница, то решил, что стоит поделиться обнаруженным и с товарищами:)
Сохраните следующую программу в /tmp/quine.pl
Illegal division by zero at /tmp/quine.pl line 1.
perl /tmp/quine.pl
File "quine.py", line 1
File "quine.py", line 1
^
IndentationError: unexpected indent
надо распарсить код типизированного класса на PHP 7 и сконвертировать в java (или в идеале в С++)
тоесть на уровне ограниченного ООП синтаксиса (без учета существования классов и методов библиотек)
на входе синтаксически корректный файл с классом на PHP на выходе синтаксически корректный файл с классом на java
Продолжим разбираться с mattermost в части интеграции с внешними сервисами.
Во второй части повествования о интеграции mattermost, речь пойдет про отправку сообщений об авариях из zabbix в mattermost. В результате поисков в сети был взят за основу вот
этот скрипт. Код написан на Perl, поэтому может потребоваться доустановка перловых-пакетов. Прежде чем приступить к описанию кода (он несколько изменён по сравнению с исходным) сперва, как водится, произведём некоторые настройки.
Из перлового веб-фреймворка Mojolicious начиная с вышедшей ровно четыре месяца назад версии 8.0 убрана команда test
Теперь вместо этой команды надо использовать prove.
http://shoorick.ru/2019/01/15/mojo-no-test/
Перловый микрофреймворк Mojolicious::Lite умеет сам выдавать существующие файлы, но при этом не все из них получают верный тип содержимого Content-type
: некоторые файлы прикидываются обычными текстовыми (text/plain
), другие же вообще не имеют никакого типа — браузер такие файлы может воспринимать как угодно. В состав фреймворка входит модуль Mojolicious::Types, в котором определены MIME-типы для наиболее популярных (most common) расширений файлов:
appcache -> text/cache-manifest atom -> application/atom+xml bin -> application/octet-stream css -> text/css gif -> image/gif gz -> application/x-gzip htm -> text/html html -> text/html;charset=UTF-8 ico -> image/x-icon jpeg -> image/jpeg jpg -> image/jpeg js -> application/javascript json -> application/json;charset=UTF-8 mp3 -> audio/mpeg mp4 -> video/mp4 ogg -> audio/ogg ogv -> video/ogg pdf -> application/pdf png -> image/png rss -> application/rss+xml svg -> image/svg+xml txt -> text/plain;charset=UTF-8 webm -> video/webm woff -> font/woff woff2 -> font/woff2 xml -> application/xml,text/xml zip -> application/zip
---
# ... ещё какие-нибудь параметры
# MS Office types
types:
rtf: application/rtf
doc: application/msword
dot: application/msword
docx: application/vnd.openxmlformats-officedocument.wordprocessingml.document
$config
)
while ( my ( $ext, $type ) = each %{ $config->'types' } ) {
app->types->type($ext => $type);
}
undef
my $type = $self->app->types->mapping->$ext->[0];
if (my $asset = $self->app->static->file("/$path/$id.$ext")) {
$self->res->headers->content_type($type);
return $self->reply->asset($asset);
}
else {
return $self->reply->not_found;
}
В состав перлового микрофреймворка Mojolicious::Lite входит класс Mojo::Log, который не просто пишет сообщения в лог, а ещё и учитывает важность сообщений — в отладочном режиме пишет много, а боевом — мало. Обнаружилось, что сообщения об ошибках имеют тот же класс debug
, что и остальные сообщения
[Tue Nov 13 12:25:51 2018] [debug] Format html [Tue Nov 13 12:25:51 2018] [debug] 200 OK (0.076118s, 13.137/s) [Tue Nov 13 12:25:53 2018] [debug] GET "/some/url" [Tue Nov 13 12:25:53 2018] [debug] Template "not_found.development.html.ep" not found [Tue Nov 13 12:25:53 2018] [debug] Rendering template "not_found.html.ep" [Tue Nov 13 12:25:53 2018] [debug] Rendering template "layouts/error.html.ep" [Tue Nov 13 12:25:53 2018] [debug] Rendering cached template "layouts/admin.html.ep" [Tue Nov 13 12:25:53 2018] [debug] Rendering cached template "search_form_navbar.html.ep" [Tue Nov 13 12:25:53 2018] [debug] Format html [Tue Nov 13 12:25:53 2018] [debug] 404 Not Found (0.004841s, 206.569/s)
hook after_dispatch => sub {
my $self = shift;
my $req = $self->req;
my $res = $self->res;
if ( $res->code >= 400 ) {
$self->app->log->error(join ' ',
'"' . $req->method . ' ' . $req->url . '"',
$res->code,
$req->headers->referrer
);
}
};
Sending children hup signal [Tue Nov 13 12:30:46 2018] [error] "GET /none" 404 - "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36" [Tue Nov 13 12:44:50 2018] [error] "GET /SW/Rplayer.html" 404 - "Mozilla/5.0 (compatible; Linux x86_64; Mail.RU_Bot/2.0; +http://go.mail.ru/help/robots)"
Есть ненулевая вероятность того, что приближающийся 2019 год будет для моей семьи не таким, как сейчас и я в силу разных причин не смогу быть там, где сначала лет пять играл и слегка учился, потом ещё пять серьёзно учился и слегка работал, а потом ещё почти двадцать серьёзно работал — в крупнейшем на ближайшие несколько областей университете. Я, конечно, последние несколько лет стараюсь достаточно подробно документировать рабочие процессы и коллеги, надеюсь, разберутся, но лучше бы найти ещё кого-то вместо себя, чтобы хозяйство не развалилось без присмотра.
Итак, нам нужен программист. Живьём на полный рабочий день (понедельник—пятница с 8:30 до 17). Требования и пожелания:
Документация по языку Perl и его модулям теперь доступна и на perldoc.pl, только оно без прокси не работает, ибо заблокировано роскомпозором. Точнее, заблокирован IP-адрес (IPv4, конечно), на котором сидит этот сайт. И lilypond.org без прокси не откроется, и toggl.com, и oEmbed.com...
Попробовал решить одну из рабочих задач, применив нелюбимый язык PHP в комплекте с современными инструментами — получилось близко к тому, что делал сравнительно недавно на перле, с некоторыми отличиями:
http::tiny зависит от Net::SSLeay - который бинарный
пока использую консольную утилиту curl
формат файла .env обычный, например:
DEPLOY_DB="test1"
DEPLOY_USER="111"
DEPLOY_PASSWORD="111"
есть какойто модуль чтоб загрузить файл и переменные получить в скрипте perl в $ENV['DEPLOY_DB'] и т.д.
или это можно сделать средствами perl?
Мы стали более лучше одеваться^W^W^W правильнее склонять имена с фамилиями. Вчера вышла свежая версия предназначенного для этого перлового модуля Lingua::RU::Inflect (он же есть и на гитхабе — чуть свеже́е, чем на CPAN).
На днях по рабочей необходимости сгенерировал родительный падеж более, чем на четырёх тысячах реальных имён — почти один процент из них оказался с ошибками — пришлось исправить модуль, за который я четыре года не брался.
Итак, в новой версии:
use Lingua::RU::Inflect ':all'
— компилятор теперь не ругается на попытку экспортировать функции, убранные в другой модуль.