Perl, Curl, Gmail
8 утра. Пришел на работу, выпил кофе, покурил. В голове каша, на работу не настроен. Не есть хорошо. Делаем разминку для мозгов опираясь на статью на Habrahabr. Напишем-ка простенький прикладной демон, который будет оповещать нас о новой почте на Gmail.
Сначала в рабочей директории создадим папку с конфигом:
$ mkdir config
Теперь в ней создадим файл конфига:
$ nano -w config/user.conf
Заполним его:
{
'username' => 'Gmail username',
'password' => 'Gmail password',
'timeout' => '300', #количество секунд между запросами
}
Добавим немного красивости. Создадим директорию для иконки и возможно еще чего-нибудь еще:
$ mkdir share $ mkdir share/icons $ cd share/icons $ wget -c http://www.google.com/intl/ru/options/icons/gmail.gif $ cd ../..
Теперь сам скрипт:
$ nano -w gmail
Пишем:
01. #!/usr/bin/perl
02. use strict;
03. my $path = `pwd`; $path =~ s/\n//i;
04. my $icon = $path.'/share/icons/gmail.gif';
05. my $config = require $path.'/config/user.conf';
06. getMail();
07. sub getMail() {
08. my $recieve = `curl -u $config->{'username'}:$config->{'password'} --silent "https://mail.google.com/mail/feed/atom" | grep -c "<entry>"`;
09. $recieve =~ s/\n//i;
10. `notify-send -u low -t 7000 -i $icon "Получено $recieve новых писем"` if $recieve != 0;
11. sleep($config->{'timeout'});
12. getMail();
13. }
Сохраняем и запускаем:
$ ./gmail &
Как то вот так…

Screenshot
Пойду теперь работать…
Вы можете отслеживать комментарии к этой записи с помощью RSS 2.0. Вы можете оставить комментарий, или использовать trackback с вашего сайта.
friendfeed
Бесконечный цикл рекурсивной функцией?
А стек не переполнится?
хз, как уже говорил ранее, скрипт просто для разминки, никак не конечная реализация, ну и как бы уже около 6 часов болтается в процессах, ничего страшно-ужасного не происходит =)
Может быть, стОит воспользоваться cтандартными директориями ~/.config и ~/.share ?
Можно конечно =)
Просто это скрипт на коленке, за пять минут, для того что бы войти в струю так сказать, вариантов модернизации уже куча в голове вертится, вплоть до интеграции с XFCE =)