Yvision.kz
kk
Разное
Разное
399 771 постов41 подписчиков
Всяко-разно
-4
04:58, 12 марта 2014

Неожиданно про Perl или как снова полюбить CGI

Привет,

расскажу-ка я историю про то, как я написал, как сейчас модно говорить, “веб-приложение” на немодном Perl/CGI и при этом остался жив и вмеру упитан. =)

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

Кстати сказать, я вообще-то не против Python’a или Ruby, мне даже они нравятся. Просто не вижу профита менять одно шило на другое.

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

Итак, в мире Perl уже давно все очень прекрасно: есть Plack, AnyEvent, Coro, uwsgi и прочее и прочее. То есть, существует немало способов решить задачу быстро и надежно. То есть, про CGI уже все забыли.

Но это мы забыли про CGI, а вообще в мире шаред-хостинга не особо-то в курсе (притом, что немало хостингов работают на перле и, по идее, должны же как-то толкать прогресс в массы, но нет).

Но довольно отступлений. Рассказ мой посвящен возникшей задаче и ее решению на Perl. Итак, задача простая, институтская, второй курс, наверное: есть сайтик, на котором показывается каталог книг. По клику на заголовок, раскрывается инфа про книгу: автор, издательство, кол-во страниц, краткое описание. Все очень просто.

Меня смутило лишь, что задача должны крутиться на перле на шаред-хосте. То есть, никакого тебе Mojolicious. Никаких Template::Toolkit. Только CGI.

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

Чтобы не парсить этот текстовый блок перлом, я решил использовать js и с помощью ajax’a тянуть данные со своего скрипта внутрь шаблона на клиенте. Сэкономили на парсинге + сделали “современный” веб-интерфейс. Отличненько.

Как вы помните, я решил обойтись без базы данных, но передумал и воспользовался Sqlite. Впрочем, мог бы совершенно спокойно обойтись, ведь в перле есть отличная штука для сериализации данных - Data::Dumper. Она из любой переменной сделает тебе текст и его можно сохранять в файл, а при необходимости, читать файл, делать eval этой строки и дальше юзать.

Получается key-value хранилище, которому вообще ничего не нужно.

В итоге, имеем cgi-скрипт, который можно пускать почти везде и который написан часа за полтора с перерывами. А вы говорите, Perl. ;-P

 
-4
210
0