Perl и CPAN, или как не изобретать велосипед.

Изображение пользователя Xenomorph.

Маленький ликбез:
Perl — высокоуровневый интерпретируемый динамический язык программирования общего назначения, созданный Ларри Уоллом, лингвистом по образованию. Название языка представляет собой аббревиатуру, которая расшифровывается как Practical Extraction and Report Language «практический язык для извлечения данных и составления отчётов»[3]. Первоначально аббревиатура состояла из пяти символов и в таком виде в точности совпадала с английским словом pearl, жемчужина. Но затем стало известно, что такой язык существует (см. PEARL) и букву «а» убрали. Талисманом языка Perl является верблюд — не слишком красивое, но очень выносливое животное, способное выполнять тяжёлую работу.
CPAN(аббр. от англ. Comprehensive Perl Archive Network — «всеобъемлющая сеть архивов Perl») — архив документации и программного обеспечения, написанного на языке программирования Perl. Количество модулей на CPANе превышает 17 тысяч, количество авторов порядка 8 тысяч. Общий объём репозитория около 7 Gb, которые дублированы в 228 зеркалах.
Итак, начнём.
Многие знают, что такое stardict и qstardict(кто не знает - это переводчики). В qstardict есть такой плагин, как web - онлайн перевод. Конечно же, мне захотелось прикрутить дополнительно translate.google.com. Вот только удачной эта попытка не была - выдавалась страничка без перевода. Приняв девиз JFGI, я нашел информацию о Google AJAX API. Еще немного телодвижений - и переводчик заработал, но!
Вывод перевода был в формате JSON, а qstardict никак не хотел распарсивать его. Я решил написать свой WebDict, с нардами и библиотекаршами. Собственно, я даже не решил - я его написал.
Два дня я радовался с того, что я вот такой весь из себя умничка. Пока не пришли выходные и долгожданная конференция Perl Mova + YAPC::RUSSIA 2010.
Посетив её и послушав доклад о PL/Perl - Perl внутри PostgreSQL‎, я заметил, что в одной из выкладок упоминается модуль WebService::Google::Language. Посетив CPAN, поискал этот модуль - оказывается он действительно есть. И реализован он много лучше моей поделки.
Итог: мой код переводчика уменьшился почти в три раза, заменив кучу модулей JSON, JSON::XS, LWP и их инициализацию на WebService::Google::Language.
Конечно, я не знал, что кто-то уже давно его написал, но всё-таки, прежде чем изобретать свой велосипед с нардами и библиотекаршами, неплохо было бы поискать в интернете.

use Perl or die; #:D
use CPAN or die; #:D

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

Отправить комментарий