Использую так редко, что забываю как делать именованные совпадения в регекспах. Запишу на память:
/(?<name>.+)/
Потом обращаться как $+{name}
Тег perl в блоге Shura
Случайно сегодня узнал о таком пакете как Capture::Tiny - позволяет удобно захыватывать вывод запускаемых программ.
https://metacpan.org/pod/Capture::Tiny
Для чтения, записи и вообще работы с файлами использую модуль Path::Tiny. Он всем хорош, за исключением дурацких названий функция для чтения и записи в файл, это slurp и spew соответственно. Хоть убей, не могу их запомнить, каждый раз приходится в справку лезть, чтобы посмотреть их названия
/The top 10 tricks of Perl one-liners/
https://blogs.oracle.com/ks...s-of-perl-one-liners
Есть тут люди, пишущие на перл? Вы какой текстовый редактор используете?
Пользовался Komodo Edit, но в последней версии из него взяли и выпилили плагин source, который предоставлял навигацию по функциям. Куды бечь? Неужели на python?
Как вернуть undef из функции в perl: http://perlmaven.com/how-to...ndef-from-a-function
Есть файл, первая строка которого начинается с символа # и почему-то она не ловится регекспом /^#.*/
Все остальные строки, которые начинаются на решётку, ловятся, первая - нет. Без символа начала строки ^ ловится и первая. Что за фигня? Начало файла не подразумевает начала строки?
Написал вчера модуль для конвертирования gpx -> geojson, но возникла проблема. Для сопоставления фоток и заметок с местоположением используются отметки времени, присутствующие в gpx треке, но не предусмотренные в geojson. Получается, что при конвертировании я теряю ключевую информацию. Надо что-то придумывать.
Пока попробую хранить массив с временными отметками отдельно, в секции properties, посмотрим, справится ли с таким монга.
Удивительно, но не нашлось ни одного модуля, который умел бы конвертить gpx в GeoJSON. Вот такая подстава, буду сам писать, на регекспах.
P.S. GPSBabel тоже не умеет в GeoJSON, говно.
Копался в гугле и случайно наткнулся на интересный проект для ведения домашнего блога - plerd
Создаём файлы в маркдауне, они автоматом конвертятся в html и закидываются в блог. Всё на статике, отлично работает с dropbox.
Plerd is meant to be an ultralight blogging platform for Markdown fans that plays well with (but does not require) Dropbox.
It allows you to compose and maintain blog posts as easily as adding and modifying Markdown files in a single folder. Plerd creates an entirely static website based on the content of this one folder, automatically updating the site whenever this content changes.
Вот, ну наконец-то! http://habrahabr.ru/post/270069/
Жаль, что в пятёрку портировать нельзя.
В Perl можно подгружать модули на лету, если это необходимо.
Например код:
my $m = eval
{
require Module::Name;
1;
};
$m or return;
# тут код, который надо выполнить, если модуль загружен
Вот есть такая библиотека libgphoto2, ей уже лет 10 наверное, но она до сих пор развивается. Библиотека довольно популярна, её используют многие проекты, в том числе kde. И есть perl, к которому есть куча модулей и вообще он из тех же времён, что и libgphoto, но парадокс! Под perl нет биндингов для этой библиотеки. Под python есть, а под perl нет!
Написал программу для подключения фотоаппаратов canon по wi-fi к компьютерам с linux, а то родные их программы только под винду, да под мак.
Называется camwatcher, исходные коды: https://bitbucket.org/Shura0/camwatcher
Настраивается папка, в которую будут скидываться новые фотки и интерфейс, на котором слушать подключения. После этого можно запускать. Фотик обнаружит комп и после подключения программа сама скачает все свежие фотографии в преднастроенную папку, разложив фотки по датам. Обалденно удобно, такого нет даже в родном каноновском софте.
Качаем, тестим: https://bitbucket.org/Shura...nloads/camwatcher.pl
p.s. ах, да, на перле!
Оказывается в perl6 добавили маханизм для разбора опций, переданных через командную строку:
http://habrahabr.ru/post/252451/
Скачиваем несколько страничек в параллель с AnyEvent
http://perlmaven.com/fetchi...allel-using-anyevent
Хм, какая интересная штука получается
perl -E 'say .1 + .2 - .3'
5.55111512312578e-17
$ ruby -e 'puts 0.1 + 0.2 - 0.3'
5.551115123125783e-17
$ python -c 'print .1 + .2 - .3'
5.55111512313e-17
$ echo "puts [expr .1+.2-.3]"|tclsh
5.551115123125783e-17
Но спасение есть:
$ perl6 -e 'say .1 + .2 - .3'
0
Присвоение дефолтных значений в perl
http://perlmaven.com/how-to...fault-values-in-perl