Tuesday, July 12, 2016

Hash keys

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


# foo.pl:

#!/usr/bin/env perl

use Data::Dumper;

my %hash = (
   '-'   => { -key   => 'value' },
   '+'   => { +key   => 'value' },
   '-+'  => { -+key  => 'value' },
   '+-'  => { +-key  => 'value' },
   '-+-' => { -+-key => 'value' },
);
print Dumper \%hash;

# output:
$VAR1 = {
         '-' => {
                  '-key' => 'value'
                },
         '-+' => {
                   '-key' => 'value'
                 },
         '-+-' => {
                    '+key' => 'value'
                  },
         '+-' => {
                   '-key' => 'value'
                 },
         '+' => {
                  'key' => 'value'
                }
       };

Посмотрим, каким такое объявление хеша видит интерпретатор:

perl -MO=Deparse foo.pl

my (%hash) = (
 '-',   {-'key', 'value'},
 '+',   {'key',  'value'},
 '-+',  {-'key', 'value'},
 '+-',  {-'key', 'value'},
 '-+-', {-(-'key'), 'value'}
);

Как видим, интерпретация осуществляется согласно математических правил, ключ воспринимается не как строка, а как число, то есть плюс необязателен (по умолчанию все числа с плюсом), минус меняет знак на противоположный:

'-',   {-'key',    меняет знак, поэтому -key
'+',   {'key',    необязателен, поэтому просто key
'-+',  {-'key,    меняет знак положительного числа, поэтому -key
'+-',  {-'key,    сначала меняет знак, плюс необязателен, поэтому -key
'-+-', {-(-'key'), меняет знак, плюс необязателен, затем опять меняет знак (с отрицательного уже на положительный), поэтому +key

Tuesday, June 7, 2016

Pod viewers

Кто на чём пишет документацию?

Для Мака нашёл пока что tkpod, он требует установки пакета XQuartz. Полёт нормальный, если не обращать внимание на отсутствие сглаживания буковок.

Tuesday, May 17, 2016

Set::IntSpan

Наткнулся на интересный модуль: Set::IntSpan, который проверяет диапазоны целых чисел.
Статья здесь.

Monday, March 7, 2011

MongoDB и Perl

Если вдруг в вашем любимом MongoDB возникли базы данных moo и affe с коллекциями
tiger - не пугайтесь, вам не взломали компьютер.
Скорее всего вы недавно устанавливали CPAN модуль MongoDB, который не все подчищает за собой после тестов.
Я написал об этом автору на github. Ждем ответа.

Wednesday, May 14, 2008

Perl и Google AJAX API

Недавно Google отказался от ранее используемого SOAP API для своих сервисов и перешел на AJAX, опубликовав соответствующие Javascript библиотеки:

Поддержка не-Javascript окружений теперь осуществляется посредством REST API, а взаимодействие пользовательского приложения с сервисами происходит в парадигме HTTP GET запрос - JSON ответ. Использование Google REST (aka AJAX) API теперь возможно из Perl через модуль REST::Google, обеспечивающий объектно-ориентированный интерфейс для доступа к сервисам Google.


Кроме CPAN, модуль также доступен как порт/пакет для FreeBSD.

Пользуйтесь!

Thursday, March 27, 2008

Welcome to Odessa Perl Mongers Group!